如何使用Shiro实现不同用户shiro 未登录跳转成功后跳转到不同主页

如何使用Shiro实现不同用户登录成功后跳转到不同主页_百度知道
如何使用Shiro实现不同用户登录成功后跳转到不同主页如何使用Shiro实现不同用户登录成功后跳转到不同主页_百度知道
如何使用Shiro实现不同用户登录成功后跳转到不同主页
提问者采纳
之后执行不同的跳转(直接在LoginAction中做)、后台判断根据权限跳转页面  登陆成功后获取 Subject 对象.  如果我的回答没帮助到您.  然后通过 Subject 对象来判断当前用户的角色&#47:  1,很高兴为您解答  您好;权限,  2、力推 Filter 过滤器,请继续追问
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
为您推荐:
用户登录的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁J2EE框架问题(16)
最近遇到shiro校验框架成功后不进行自动跳转到指定页面;
相关配置如下:
&bean id=&shiroFilter& class=&org.apache.shiro.spring.web.ShiroFilterFactoryBean&&
&property name=&securityManager& ref=&securityManager& /&
&property name=&loginUrl& value=&/login& /&
&property name=&successUrl& value=&/user/center& /&
&property name=&filterChainDefinitions&&
/login = authc
/logout = logout
/** = user
&/property&
我使用的是验证过滤器是逻辑上只要登录成功即可跳转至“/user/center”,
实际上不行老是跳转到xxx.js,xxx.ico等等,而且每次都不固定;
主要原因是successUrl配置只是做为一种附加配置,只有session中没有用户请求地址时才会使用successUrl;
系统默认登录成功后首次跳转的地址为,访问系统时初次使用地址,例:如果用户首次访问的是http://****/aa/aa.&
&那么shiro校验成功后跳转的地址即可http://****/aa/aa. 否则shiro将跳转到默认虚拟路径:“/”;
对于应用中,如果没有注册/路径,则默认使用web.xml中配置的&welcom-list&配置;
shiro源码逻辑如下:String successUrl =
boolean contextRelative =
SavedRequest savedRequest = WebUtils.getAndClearSavedRequest(request);
if (savedRequest != null && savedRequest.getMethod().equalsIgnoreCase(AccessControlFilter.GET_METHOD)) {
successUrl = savedRequest.getRequestUrl();
contextRelative =
if (successUrl == null) {
successUrl = fallbackU
if (successUrl == null) {
throw new IllegalStateException(&Success URL not available via saved request or via the & +
&successUrlFallback method parameter. One of these must be non-null for & +
&issueSuccessRedirect() to work.&);
WebUtils.issueRedirect(request, response, successUrl, null, contextRelative);
上述代码红色部分表明,对于成功后地址指向,会依据会话SESSION中保留的请求地址;
解决办法:&
如果shiroFilter能够修改为拦截指定扩展名(如:*.do)的话,最好修改为用扩展名拦截,这样避开一些资源文件.
如果是用rest风格拦截(&/&),则需要修改认证的filter,具体做法:复写FormAuthenticationFilter中的onLoginSuccess为:
WebUtils.issueRedirect(request, response, getSuccessUrl());
注意:对应的跳转地址应该在相应的mvc框架中配置好
/static/** = anon
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24758次
排名:千里之外
原创:32篇
(1)(2)(1)(1)(1)(1)(2)(3)(1)(1)(2)(4)(1)(1)(2)(11)(6)(1)(1)6440人阅读
shiro(16)
很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面。如果用户是点击&登录&链接去到登录页面进行登录的,我们很容易跟踪用户的登录前的页面。比如,在&登录&链接后加一个url参数,如:/login.html?url=/xx.html,这个url就是当前页面。用户浏览不同页面,&登录&链接后面的url跟着改变。这样,跳转到登录页面时都会带有上一个页面的url作为参数,登录后也很容易拿到这个参数进行重定向到登录前的页面。
但当我们用配置/xxx.html=authc这种方式,限制用户访问/xxx.html连接时必须是认证过的用户,否则shiro的filter将会重定向到登录页面,上面的方法应当好处理了。不过shiro在跳转前有记录跳转前的页面。前没有认证的用户请求需要认证的链接时,shiro在跳转前会把跳转过来的页面链接保存到session的attribute中,key的值叫shiroSavedRequest,我们可以能过WebUtils类拿到。
当用户登录成功后,可能通过String url = WebUtils.getSavedRequest(request).getRequestUrl();,拿到跳转到登录页面前的url,然后redirect到这个url。其实我们可以看看这个方法的源码:
public static SavedRequest getSavedRequest(ServletRequest request) {
SavedRequest savedRequest =
Subject subject = SecurityUtils.getSubject();
Session session = subject.getSession(false);
if (session != null) {
savedRequest = (SavedRequest) session.getAttribute(SAVED_REQUEST_KEY);
return savedR
从session中拿到SaveRequest。不过值得注意的是,这个SaveRequest是在用户通过上面方式跳转登录时shiro才会保存,并且不会改变,除非下一次跳转再次发生。并不是每一个请求,shiro都会把上一个请求保存到session中。所以,不能通过WebUtils.getSavedRequest(request)在任何地方调用来拿到上一个页面的请求。这个方法的调用,更应该是在用户登录成功后,重定向到页面时使用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:64091次
排名:千里之外
原创:23篇
评论:46条
(1)(1)(4)(5)(3)(3)(1)(1)(1)(1)(6)如何使用Shiro实现不同用户登录成功后跳转到不同主页_百度知道
如何使用Shiro实现不同用户登录成功后跳转到不同主页
提问者采纳
  然后通过 Subject 对象来判断当前用户的角色&#47、力推 Filter 过滤器:  1、后台判断根据权限跳转页面  登陆成功后获取 Subject 对象,之后执行不同的跳转(直接在LoginAction中做);权限  您好,  2,很高兴为您解答
其他类似问题
为您推荐:
用户登录的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 shiro 超时跳转页面 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信