回上一頁

使用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使用。