编写好了JAVA WEB,想像桌面软件那样,第一次使用的时候需要输入一个key,验证通过则能使用整个系统,否则就无法访问任何页面。
key可以包含授权使用时长,比如1个月。
没有输入正确的key,则无论访问什么url路径,都会跳转到输入key的页面(和用户的登录页面一样)
请问这该怎么实现?
认证0级讲师
簡單來說 兩種
根據對方機器產生key。
就是你自己實作一種加密方式。 (摘要演算法之類的不需要反解的演算法就行) 然後取得專案部署那台電腦幾個主要硬體的mac地址,如主機板網卡硬碟之類的,專案內用這些資料計算出一個值,和使用者填入的key比較相同就啟動正式項目,不同就提示請填入key。 至於如何獲取對方硬體訊息,就隨意了,例如直接讓部署專案的同志給你發回來然後,你用那個算計算一個key 發回去。
mac地址
你自己產生一個key到處發放。
例如再建一個web服務,用這台機器生成一批UUID發放出去,然後專案啟動後,先請求一次這個伺服器進行,伺服器進行校驗,判斷key存不存在,用過沒有,發來用過的key的機器和第一次啟動是同一台機器麼。 (一樣用不可逆的演算法就行) 或者更簡單,搞一種偽隨機演算法(可逆的演算法),根據種子可以算出一批key,每個key都可以反解出這個種子。 計畫啟動時解密輸入的key,判斷是不是那個種子。
UUID
前提是你已經透過其他方式把這個key給了客戶.
key
校驗訪問是否非法通過cookie判断是否已经登陆,如果验证比较严谨,你这种按授权来的也可以加些ip地址,mac地址之類的強校驗,畢竟你客戶群很可能不是普通大眾.
cookie
ip
mac
授權使用時長,你說的是按一個月算的,也有可能有高級點的客戶按半年算的,所以這個是生成時候決定的. 可以使用redis存儲你的這個redis存储你的这个key,可以设置过期时间,每次访问从cookie取key(多数是要加密的),根据key可以去redis,可以設定過期時間,每次存取從cookie取
redis
springmvc
不知道你的key和使用者是怎麼綁定的。應是以用戶的唯一識別。可以把符合的使用者的唯一識別和key存入資料庫或快取裡,以此來判斷使用者是否有權限。至於頁面跳轉搞個filter就夠了。
可以登入成功後產生一個秘鑰 存入cookie 並且設定cookie的時效,每次刷新網頁是驗證一下,這算是比較簡便的方法了
沒有其他外部憑證的情況下,題主的需求與「使用使用者名稱密碼登入後記錄登入狀態一段時間」有什麼不同?
謝謝各位的回复,不過不好意思只能採納一個答案。
簡單來說 兩種
根據對方機器產生key。
就是你自己實作一種加密方式。 (摘要演算法之類的不需要反解的演算法就行)
然後取得專案部署那台電腦幾個主要硬體的
mac地址
,如主機板網卡硬碟之類的,專案內用這些資料計算出一個值,和使用者填入的key比較相同就啟動正式項目,不同就提示請填入key。至於如何獲取對方硬體訊息,就隨意了,例如直接讓部署專案的同志給你發回來然後,你用那個算計算一個key 發回去。
你自己產生一個key到處發放。
例如再建一個web服務,用這台機器生成一批
UUID
發放出去,然後專案啟動後,先請求一次這個伺服器進行,伺服器進行校驗,判斷key存不存在,用過沒有,發來用過的key的機器和第一次啟動是同一台機器麼。 (一樣用不可逆的演算法就行)或者更簡單,搞一種偽隨機演算法(可逆的演算法),根據種子可以算出一批key,每個key都可以反解出這個種子。
計畫啟動時解密輸入的key,判斷是不是那個種子。
前提是你已經透過其他方式把這個
key
給了客戶.校驗訪問是否非法通過
cookie
判断是否已经登陆,如果验证比较严谨,你这种按授权来的也可以加些ip
地址,mac
地址之類的強校驗,畢竟你客戶群很可能不是普通大眾.授權使用時長,你說的是按一個月算的,也有可能有高級點的客戶按半年算的,所以這個是生成時候決定的.
(多數是要加密的),根據可以使用
redis
存儲你的這個redis
存储你的这个key
,可以设置过期时间,每次访问从cookie
取key
(多数是要加密的),根据key
可以去redis
,可以設定過期時間,每次存取從cookie
取redis
取授權剩餘時間.springmvc
不知道你的key和使用者是怎麼綁定的。應是以用戶的唯一識別。可以把符合的使用者的唯一識別和key存入資料庫或快取裡,以此來判斷使用者是否有權限。至於頁面跳轉搞個filter就夠了。
可以登入成功後產生一個秘鑰 存入cookie 並且設定cookie的時效,每次刷新網頁是驗證一下,這算是比較簡便的方法了
沒有其他外部憑證的情況下,題主的需求與「使用使用者名稱密碼登入後記錄登入狀態一段時間」有什麼不同?
謝謝各位的回复,不過不好意思只能採納一個答案。