解決單點登入的一個方法!
這個只需要session和application就好了,
使用者登入時,這樣寫:
User user = dao.login(userName, password);// 資料庫中判斷使用者名稱和密碼
if (null != user) {// 表示使用者存在
session.setAttribute("user", user);// 把使用者放進session中
application.setAttribute(userName, session.getId());/* 把使用者所在的sessionId放進application中,首先要明白一點,一個session對應一個瀏覽器,其次要注意一點,userName必須是唯一的*/
}
當使用者訪問到其他url的時候,可以在過濾器或你的攔截器中這樣寫:
User user = (User) session.getAttribute("user");// 從session中取出使用者
if (null == user) {// 未登入或者登入已經過期
response.sendRedirect(request.getContextPath());// 跳轉到首頁或登入頁面
}
String sessionId = (String) application.getAttribute(user.getUserName());
if (null == sessionId || !sessionId.equals(session.getId())) {/*這說明使用者已經在其他電腦或其它瀏覽器登入了,那麼之前登入的session就無效了,自動被後面的登入給踢掉*/
response.sendRedirect(request.getContextPath());// 跳轉到首頁或登入頁面
}
chain.doFilter(request, response);// 通過驗證,放行使用者進入目標url
這種方式是我的一個前輩想到的,我們公司的所有專案都採納了這種方式,
確保一個賬號只能在一個瀏覽器中使用
使用者登入時,這樣寫:
User user = dao.login(userName, password);// 資料庫中判斷使用者名稱和密碼
if (null != user) {// 表示使用者存在
session.setAttribute("user", user);// 把使用者放進session中
application.setAttribute(userName, session.getId());/* 把使用者所在的sessionId放進application中,首先要明白一點,一個session對應一個瀏覽器,其次要注意一點,userName必須是唯一的*/
}
當使用者訪問到其他url的時候,可以在過濾器或你的攔截器中這樣寫:
User user = (User) session.getAttribute("user");// 從session中取出使用者
if (null == user) {// 未登入或者登入已經過期
response.sendRedirect(request.getContextPath());// 跳轉到首頁或登入頁面
}
String sessionId = (String) application.getAttribute(user.getUserName());
if (null == sessionId || !sessionId.equals(session.getId())) {/*這說明使用者已經在其他電腦或其它瀏覽器登入了,那麼之前登入的session就無效了,自動被後面的登入給踢掉*/
response.sendRedirect(request.getContextPath());// 跳轉到首頁或登入頁面
}
chain.doFilter(request, response);// 通過驗證,放行使用者進入目標url
這種方式是我的一個前輩想到的,我們公司的所有專案都採納了這種方式,
確保一個賬號只能在一個瀏覽器中使用
相關文章
- 單點登入之cas整合sonar的配置方法詳解
- 以太坊社群意外解決了網際網路的一個重大問題:單點登入
- 完全跨域的單點登入(SSO)解決方案原始碼解析跨域原始碼
- peoplesoft不能登入DB解決方法
- 利用Redis單點登入跨伺服器的方法Redis伺服器
- 單點登入原理
- CAS單點登入(SSO)實戰(一)
- 記錄一個 gitlab 登入問題解決Gitlab
- 一圖搞懂Web應用的單點登入Web
- ssh登入慢問題解決方法
- Linux——ssh登入很慢解決方法Linux
- 解決mysql無法遠端登入的方法MySql
- 跨域分散式系統單點登入的實現(CAS單點登入)跨域分散式
- 如何自己實現一個健壯的 SSO 單點登入系統
- 初探單點登入 SSO
- Cookie Session跨站無法共享問題(單點登入解決方案)CookieSession
- java實現簡單的單點登入Java
- 推薦一個分散式單點登入框架XXL-SSO!分散式框架
- Ucenter後臺登陸驗證碼CCCC的解決方法無法登入解決辦法
- 一個ssh無法遠端登入的問題跟蹤解決
- 記一次 SSO 單點登入實現
- CAS單點登入-簡介
- SSO單點登入邏輯
- 單點登入 SSO 的實現原理
- 關於一級域名相同的兩個系統單點登入問題
- 重複登入問題最終解決方法
- 關於QQ郵箱登入提示一鍵登入解決方案
- 使Activity只存在一個例項(解決微信登入 原有登入介面無法關閉)
- 登入一個簡單的網頁進行的操作網頁
- 帝國模板登入出現已被登入或者密碼錯誤解決方法密碼
- 絕對完全跨域統一單點登入登出跨域
- win10應用商店登入失敗的解決方法Win10
- mac google chrome無法登入的解決方法看這裡MacGoChrome
- 前端關於單點登入的知識前端
- 單點登入的三種實現方式
- 單點登入原理與簡單實現
- mysql登入遇到ERROR 1045問題解決方法MySqlError
- CAS單點登入-基礎搭建