Token技術的功能及實現
阿新 • • 發佈:2019-01-01
Token功能及其技術及其實現
目前就知道Token功能就兩種:
1.防止表單重複提交
2.用來作身份驗證
1.下面來介紹其用法
下面根據以上流程用程式碼演示
我寫了兩個頁面 一個是主頁 會跳轉到新增頁面 第二個是新增頁面 模擬使用者提交資料場景
說明下 token一般放在隱藏域中 在這裡方便大家看 沒有隱藏
主要說明下後臺的程式碼
token其實只要是任何字串都行 這裡用到的是uuid 是通用唯一識別碼,而且每次請求到新增頁面都會生成不同的uuid(token)
//跳轉到新增頁面
@RequestMapping("/add.do")
public String add(HttpServletRequest request,HttpServletResponse response){
//生成token
UUID token=UUID.randomUUID();
System.out.println("token的值"+token);
//放入session中
request.getSession().setAttribute("token", token.toString());
//放入request作用域中傳到前臺
request.setAttribute("token" , token);
return "add";
}
//前臺穿過來的token進行比對
@RequestMapping("/addMessage.do")
public synchronized String addMessage(HttpServletRequest request){
//獲取session中的token
Object token1=request.getSession().getAttribute("token");
//獲取前臺穿過來的token
String token=request.getParameter("token" );
System.out.println("token1的值"+token1);
if(token1==null){
System.out.println("提交出錯");
}
else if(!token1.equals(token)){
System.out.println("提交出錯");
}else{
System.out.println("提交成功");
//移除session 防止重複提交
request.getSession().removeAttribute("token");
}
return "";
}
後臺顯示結果
token的值589a5d93-ceab-4b95-9820-b9e6d980be6f
token1的值589a5d93-ceab-4b95-9820-b9e6d980be6f
提交成功
2.基於Token的身份驗證
使用基於 Token 的身份驗證方法,在服務端不需要儲存使用者的登入記錄。大概的流程是這樣的:
1.客戶端使用使用者名稱跟密碼請求登入
2.服務端收到請求,去驗證使用者名稱與密碼驗證成功後,服務端會簽發一個 Token,再把這個 Token 傳送給客戶端
3.客戶端收到 Token 以後可以把它儲存起來,比如放在 Cookie 裡或者 Local Storage 裡客戶端每次向服務端請求資源的時候需要帶著服務端簽發的 Token服務端收到請求,然後去驗證客戶端請求裡面帶著的 Token,如果驗證成功,就向客戶端返回請求的資料
看過一篇文章好像ofo裡面也有用到Token。目前只知道這麼多了,有問題的都可以評論,留言指出大家共同進步。