使用Rails設計UserToken給API使用

--

設計user token是串接api非常常見的功能之一,以下剛好有用到,把建立基礎架構觀念寫下來。

Step1 創建一個會員資料表

登入註冊功能不在這裡說。

Step2 創建一張 user_token資料表

這張表要有一個 user_id欄位,用來與user做關聯用,另外可以再加上 expiration_time, revoke,讓token能有效期限的功能。

Step3 接著兩個創建好後:

就可以在登入或註冊建立使用user時,隨機創建token亂數存入到token的欄位裡面。

Step4 給API判斷使用:(程式碼以Ruby為例)

auth_token = request.headers["AUTH-TOKEN"]
# 檢查是否存在 auth_token
if auth_token.present?
# 存在 auth_token,檢查 token 是否有效
user_token = UserToken.find_by(token: auth_token, revoke: true)

if user_token && user_token.expiration_time > Time.now
# Token 有效
@user = user_token.user
else
# Token 無效或已過期
update_token = UserToken.find_by(token: auth_token)
if update_token.present?
update_token.update(revoke: false)
end
render json: {
message: 'auth_token false Invalid or expired token',
status: 401
}
return
end
end

基本上就這樣,當然可以延伸讓token更長,
可以搭配類似JWT工具強化token使用。

--

--