springmvc,shiro,登录成功之后无法跳转页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc,shiro,登录成功之后无法跳转页面相关的知识,希望对你有一定的参考价值。
我的跳转是ajax登录,如果成功,服务器返回一个字符串success,前台ajax回调中判断如果是success,则window.location.href,在本地完全好用,放到服务器上就不好用
本人web项目是springMvc,shiro登录,在本地测试完美运行,但是放到linux服务器上,浏览器的控制台就报错,说服务器内部错误,登录之后一直无法跳转页面,但是我在linux服务器的控制台上根本没发现错误,但就是无法返回成功,不知道这是什么原因,有大神能帮忙看看吗??
2、后台判断根据权限跳转页面
登陆成功后获取 Subject 对象.
然后通过 Subject 对象来判断当前用户的角色/权限,之后执行不同的跳转(直接在LoginAction中做). 参考技术A AuthenticationInfo authcInfo = new SimpleAuthenticationInfo(shop.getLoginName(), shop.getPassword(), "昵称或真实姓名");
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
session.setAttribute();
仅供参考。
springMVC集成shiro权限认证框架,登录之后退出登录出现登录不上的问题
有两种解决方式:
1.在web.xml文件配置一段欢迎页面:
<welcome-file-list> <welcome-file>/index.do</welcome-file> </welcome-file-list>
2.在自定义表单过滤器MyFormAuthenticationFilter里,添加清除shiro 在sesion存储的上一次访问地址 shiroSavedReques
1 package cn.zj.logistic.shiro; 2 3 import javax.servlet.ServletRequest; 4 import javax.servlet.ServletResponse; 5 import javax.servlet.http.HttpServletRequest; 6 7 import org.apache.commons.lang3.StringUtils; 8 import org.apache.shiro.authc.AuthenticationToken; 9 import org.apache.shiro.session.Session; 10 import org.apache.shiro.subject.Subject; 11 import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; 12 import org.apache.shiro.web.util.WebUtils; 13 14 public class MyFormAuthenticationFilter extends FormAuthenticationFilter 15 16 @Override 17 protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception 18 19 HttpServletRequest req = (HttpServletRequest) request; 20 21 // 1.获取前台表单提交的验证码 22 String verifyCode = req.getParameter("verifyCode"); 23 24 25 26 String rand = (String) req.getSession().getAttribute("rand"); 27 28 System.out.println("rand :" + rand); 29 30 if (StringUtils.isNotBlank(verifyCode)) 31 if (!verifyCode.equals(rand.toLowerCase())) 32 // 共享一个错误信息到 shiroLoginFailure 33 request.setAttribute("shiroLoginFailure", "verifyCodeError"); 34 35 // 返回true,shiro就不再进行下一操作(数据库认证)了,直接返回了 36 return true; 37 38 39 40 return super.onAccessDenied(request, response); 41 42 43 @Override 44 protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, 45 ServletResponse response) throws Exception 46 47 48 // 1.获取sesssion 49 Session session = subject.getSession(false); 50 if (session != null) 51 // 清除shiro共享的上一次地址 ://shiroSavedRequest 52 session.removeAttribute(WebUtils.SAVED_REQUEST_KEY); 53 54 55 return super.onLoginSuccess(token, subject, request, response); 56 57 58
以上是关于springmvc,shiro,登录成功之后无法跳转页面的主要内容,如果未能解决你的问题,请参考以下文章
springMVC集成shiro权限认证框架,登录之后退出登录出现登录不上的问题
shiro springmvc的controller要怎么写
shiro+springmvc集成时,配置loginUrl='login.jsp',但是login.jsp页面在WEB-INF 目录下,导致无法显示