首先,咱們先參考一下jeesite登陸流程簡單梳理這篇文章,瞭解一下jeesite框架中從進入登陸界面到,登陸成功以後進入到系統首頁這之間的過程當中到底經歷了哪些過程。java
我想實現這麼一個需求:一個超連接帶兩個參數(帳號、密碼),直接請求登陸系統。文章中有這樣一段話「FormAuthenticationFilter根據用戶登陸表單提交的信息生成一個token,而後交給SystemAuthorizingRealm進行認證。先是調用doGetAuthenticationInfo進行身份驗證,而後再調用doGetAuthorizationInfo進行受權驗證。最後返回LoginController的login進行跳轉。」。若是咱們響越過系統自己的登陸規則,則須要模擬這個過程。因而新建立了一個方法,代碼以下:spring
@RequestMapping(value = "${adminPath}/singleLogin") public String singleLogin(HttpServletRequest request){ String resultPageURL = "modules/sys/sysLogin"; try { String username = request.getParameter("username"); String password = request.getParameter("password"); UsernamePasswordToken token = new UsernamePasswordToken(username, password.toCharArray(), false, "", "", false); token.setRememberMe(true); Subject currentUser = SecurityUtils.getSubject(); currentUser.login(token); if(currentUser.isAuthenticated()){ resultPageURL = "redirect:" + adminPath; }else{ token.clear(); } }catch (Exception e){ logger.error("[LoginController singleLogin]"); } return resultPageURL; }
這個地方須要注意一下,這個請求地址須要在spring-context-shiro.xml文件中的:app
<bean name="shiroFilterChainDefinitions" class="java.lang.String">
增長:框架
${adminPath}/singleLogin = anon
訪問測試:http://ip地址:端口/a/singleLogin?username=lxy&password=123測試