Token認證問題

2021-10-03 05:56:07 字數 2072 閱讀 5039

自己按自己的理解做個乙個token認證

首先有個token物件,具有以下屬性

private long id;

private long exp;   //有效時間

private long createtime;

private string power;   //許可權

當使用者登陸時生成乙個token物件,把屬性轉換成字串

string temp = tokenbean.getid()+";"+tokenbean.getcreatetime()+";"+tokenbean.getexp()+";"+tokenbean.getpower();
進行aes加密 

/**

* aes加密字串

* * @param content

*            需要被加密的字串

* @param password

*            加密需要的密碼

* @return 密文

*/public static byte encrypt(string content, string password) catch (nosuchpaddingexception e) ",e);

} catch (nosuchalgorithmexception e) ",e);

} catch (unsupportedencodingexception e) ",e);

} catch (invalidkeyexception e) ",e);

} catch (illegalblocksizeexception e) ",e);

} catch (badpaddingexception e) ",e);

}return null;

}

再用base64加密,儲存到資料庫

base64encoder encoder = new base64encoder();

string token = encoder.encodebuffer(tokenbytes);

同時請求頭新增屬性 authorization,返回登陸成功。

response.addheader("authorization",token);
對於請求先進行base64解碼

byte tokenbytes = decoder.decodebuffer(authorization);
在aes解碼

/**

* 解密aes加密過的字串

* * @param content

*            aes加密過過的內容

* @param password

*            加密時的密碼

* @return 明文

*/public static byte decrypt(byte content, string password) catch (nosuchalgorithmexception e) ",e);

} catch (nosuchpaddingexception e) ",e);

} catch (invalidkeyexception e) ",e);

} catch (illegalblocksizeexception e) ",e);

} catch (badpaddingexception e) ",e);

}return null;

}

然後根據解碼後的id在資料庫進行查詢

同時token的有效期要在當前時間內

如果已經失效,但是和資料庫儲存的token一致,重新重新整理token,不進行攔截

不一致則進行攔截

另外放上乙個md5加密的方法

import org.springframework.util.digestutils;

public static string ge***5(string str)

Token 認證的來龍去脈

摘要 token 是在服務端產生的。如果前端使用使用者名稱 密碼向服務端請求認證,服務端認證成功,那麼在服務端會返回 token 給前端。前端可以在每次請求的時候帶上 token 證明自己的合法地位 不久前,我在在前後端分離實踐中提到了基於 token 的認證,現在我們稍稍深入一些。通常情況下,我們...

Token 認證的來龍去脈

不久前,我在在前後端分離實踐中提到了基於 token 的認證,現在我們稍稍深入一些。通常情況下,我們在討論某個技術的時候,都是從問題開始。那麼第乙個問題 而要回答這個問題很簡單 因為它能解決問題!可以解決哪些問題呢?token 完全由應用管理,所以它可以避開同源策略 token 可以避免 csrf ...

Token 認證的來龍去脈

不久前,我在在前後端分離實踐中提到了基於 token 的認證,現在我們稍稍深入一些。通常情況下,我們在討論某個技術的時候,都是從問題開始。那麼第乙個問題 為什麼要用 token?而要回答這個問題很簡單 因為它能解決問題!可以解決哪些問題呢?token 完全由應用管理,所以它可以避開同源策略 toke...