基於cookie的簡單鑑權與JWT鑑權

2021-09-21 06:56:24 字數 4095 閱讀 9022

cookie鑑權在本文沒有做token的加密,通過token/使用者資訊json鍵值對的方式存入redis,這樣避免了session共享的問題,由於本文實現上省略了token加密,不能從cookie裡解密拿到使用者資訊,再加上cookie有被偽造的風險,所以安全性較低.

有token加密的實現在本文jwt裡有做

@apioperation(value = "使用者登入", notes = "登入介面")

apiresult.setmsg("錯誤");

return apiresult;

}

public class tokenintecptor implements handlerinterceptor 

protected static logger log = logge***ctory.getlogger(tokenintecptor.class);

/*** 處理前

}// system.out.println("token是" + token);

if (token != null) else

}} else

printwriter printwriter = response.getwriter();

// system.out.println("未攜帶cookie,重新登入");

apiresult result = new apiresult<>();

result.setcode(commoncode.token_invalid.getkey());

result.setmsg("請重新登入");

printwriter.write(result.tostring());

return false;

}/**

* 處理後呼叫(正常)

/*** 處理後呼叫(任何情況)

/*** 移除資訊,包括資料來源型別,與user資訊

*/public void removethreadlocalinfo()

@configuration

public class interceptorconfig extends webmvcconfigureradapter

用以方便從執行緒中拿到物件

}cookie與jwt都是將認證資訊返回給了客戶端,最主要的區別是jwt不存在cookie跨域的問題.

io.jsonwebtoken

jjwt

0.7.0

@component

public class jwtutil ")

private string key;

@value("$")

private long ttl;//乙個小時

public string getkey()

public void setkey(string key)

public long getttl()

public void setttl(long ttl)

/*** 生成jwt

** @param id

* @param subject

* @return

*/public string createjwt(string id, string subject, string roles)

return builder.compact();

}/**

* 解析jwt

** @param jwtstr

* @return

*/public claims parsejwt(string jwtstr)

}

@autowired

private jwtutil jwtutil;

/*** 使用者登陸

** @param loginname

* @param password

* @return

*/public result login(@requestbody maploginmap) else

}

@configuration

public class jwtfilter extends handlerinterceptoradapter

if ("user".equals(claims.get("roles"))) }}

return true;

}}

@configuration

@autowired

private jwtfilter jwtfilter;

@override

public void addinterceptors(interceptorregistry registry)

}

JWT實現基於token的鑑權

2018年01月25日 17 59 15 2.一般放在http的headers 引數裡面的authorization裡面,值的前面加bearer關鍵字和空格。3.主要用於身份認證和資訊交換 4.由三部分組成,用英文句點連線 例如 yyyyyy.zzzzzz payload.signature 由小數...

基於Nginx Lua實現的Token鑑權認證

管理員要發布乙個公告,在前台傳送post請求,攜帶需要發布的json資料,呼叫後台api服務,通過需要發布的資料,利用freemaker模板,生成乙個靜態頁,儲存到伺服器指定目錄。所以,乙個靜態頁面,無論非登入使用者還是已登入但是沒有授予檢視該稿件許可權的使用者,頁面能夠做的是利用js判斷他們的使用...

MongoDB單機與集群的使用者鑑權

注 這裡單機採用配置檔案的方式啟動 先使用無驗證的方式啟動mongo,進入shell介面,輸入mongo進入客戶端 建立root使用者 接下來建立有唯讀許可權的普通使用者 再創建有讀寫許可權的普通使用者 使用者建立完成後,再修改配置檔案 vim etc mongod.conf security au...