首先,咱们先参考一下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测试