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



0

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

Shiro配置文件中successUrl指定的页面只有一个: 
Java代码   收藏代码
  1. "shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
  2.         "securityManager" ref="securityManager"/>  
  3.         "loginUrl" value="/login"/>  
  4.         "successUrl" value="/main"/>  
  5.         "unauthorizedUrl" value="/login"/>  
  6.         ...  
  7.       

有的用户登录成功后要跳转到别的页面,怎么实现?
shiro 
2012年9月11日 11:48
  • Comment添加评论
  • 关注(0)

4个答案按时间排序按投票排序

0 0

在success页面进行判断,不同的情况下重定向到不同页面 
sendredirect

2012年9月26日 14:11
  • Comment添加评论
0 0

登陆成功后获取 Subject 对象. 
然后通过 Subject 对象来判断当前用户的角色/权限, 之后执行不同的跳转(直接在LoginAction中做). 

我的登陆部分代码: 

Java代码   收藏代码
  1. UsernamePasswordToken token = new UsernamePasswordToken(name, password);  
  2.   
  3. try {  
  4.     SecurityUtils.getSubject().login(token);  
  5.       
  6.     Subject subject = SecurityUtils.getSubject();  
  7.                       // 这里可以调用subject 做判断  
  8.   
  9.     System.out.println("--------------------------------------------------------------");  
  10.     Boolean isadmin = subject.hasRole("admin");  
  11.     log.info("是否为管理员:"+isadmin);  
  12.     System.out.println("--------------------------------------------------------------");  
  13.       
  14.     String userId = (String)subject.getPrincipal();  
  15.     User user = userService.getById(userId);  
  16.     ShiroUser shiroUser = shiroUserService.getByDyId(userId);  
  17.                
  18.     if(shiroUser == null){  
  19.         this.addActionError(getText("login.failure"));  
  20.         return ERROR;  
  21.     }else{  
  22.         int used = shiroUser.getUsed();  
  23.         if(used == 1){  
  24.             this.addActionError(getText("login.noused"));  
  25.             return ERROR;  
  26.         }  
  27.     }  
  28.       
  29.       
  30.     Session session = subject.getSession(true);  
  31.     session.setAttribute(LoginAction.USER_KEY, user);  
  32.     session.setAttribute(LoginAction.SHIRO_USER_KEY, shiroUser);  
  33.       
  34.     log.info("set workflow define to session");  
  35.     session.setAttribute("ptDefine", WorkflowContext.getPtDefine());  
  36.       
  37. catch (AuthenticationException e) {  
  38.     log.info(e.getMessage());  
  39.     this.addActionError(getText("login.failure"));  
  40. }  
  41.   
  42. if (this.hasErrors()) {  
  43.     log.info("login erro ...");  
  44.     return ERROR;  
  45. }  



配置, 登陆跳转基本没用到, 注意 filterChainDefinitions, 
Java代码   收藏代码
  1. "shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
  2.     "securityManager" ref="securityManager"/>  
  3.       
  4.     "loginUrl" value="/index.jsp"/>  
  5.     "successUrl" value="/home.jsp"/>  
  6.     "unauthorizedUrl" value="/unauthorized.jsp"/>   
  7.       
  8.       
  9.       
  10.       
  11.     "filters">  
  12.           
  13.             "authc">  
  14.                    class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"/>  
  15.                  
  16.           
  17.        
  18.     "filterChainDefinitions">  
  19.                    
  20.             # static file chains  
  21.             /js/* = anon  
  22.             /css/* = anon  
  23.             /img/* = anon  
  24.             /images/* = anon  
  25.             /applets/* = anon  
  26.               
  27.             # login/logout chain  
  28.             /login.action = anon  
  29.               
  30.             # some example chain definitions:  
  31.             #/admin/** = authc, roles[ptAdmin]  
  32.             /docs/** = authc, perms[document:read]  
  33.               
  34.             /** = user  
  35.             # more URL-to-FilterChain definitions here  
  36.           
  37.       
  38.   

2012年9月11日 15:19
  • Comment添加评论
0 0

1.力推 Filter 过滤器, 
2.后台判断根据权限跳转页面 

2012年9月11日 12:38
  • Comment添加评论
0 0

最简单的办法到success页面进行判断,然后不同的用户再重定向到不同的页面。

2012年9月11日 12:19
0

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

Shiro配置文件中successUrl指定的页面只有一个: 
Java代码   收藏代码
  1. "shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
  2.         "securityManager" ref="securityManager"/>  
  3.         "loginUrl" value="/login"/>  
  4.         "successUrl" value="/main"/>  
  5.         "unauthorizedUrl" value="/login"/>  
  6.         ...  
  7.       

有的用户登录成功后要跳转到别的页面,怎么实现?
shiro 
2012年9月11日 11:48
src="http://www.iteye.com/iframe_ggbd/186" scrolling="no" width="468" height="60" frameborder="0">
  • Comment添加评论
  • 关注(0)

4个答案按时间排序按投票排序

0 0

在success页面进行判断,不同的情况下重定向到不同页面 
sendredirect

2012年9月26日 14:11
  • Comment添加评论
0 0

登陆成功后获取 Subject 对象. 
然后通过 Subject 对象来判断当前用户的角色/权限, 之后执行不同的跳转(直接在LoginAction中做). 

我的登陆部分代码: 

Java代码   收藏代码
  1. UsernamePasswordToken token = new UsernamePasswordToken(name, password);  
  2.   
  3. try {  
  4.     SecurityUtils.getSubject().login(token);  
  5.       
  6.     Subject subject = SecurityUtils.getSubject();  
  7.                       // 这里可以调用subject 做判断  
  8.   
  9.     System.out.println("--------------------------------------------------------------");  
  10.     Boolean isadmin = subject.hasRole("admin");  
  11.     log.info("是否为管理员:"+isadmin);  
  12.     System.out.println("--------------------------------------------------------------");  
  13.       
  14.     String userId = (String)subject.getPrincipal();  
  15.     User user = userService.getById(userId);  
  16.     ShiroUser shiroUser = shiroUserService.getByDyId(userId);  
  17.                
  18.     if(shiroUser == null){  
  19.         this.addActionError(getText("login.failure"));  
  20.         return ERROR;  
  21.     }else{  
  22.         int used = shiroUser.getUsed();  
  23.         if(used == 1){  
  24.             this.addActionError(getText("login.noused"));  
  25.             return ERROR;  
  26.         }  
  27.     }  
  28.       
  29.       
  30.     Session session = subject.getSession(true);  
  31.     session.setAttribute(LoginAction.USER_KEY, user);  
  32.     session.setAttribute(LoginAction.SHIRO_USER_KEY, shiroUser);  
  33.       
  34.     log.info("set workflow define to session");  
  35.     session.setAttribute("ptDefine", WorkflowContext.getPtDefine());  
  36.       
  37. catch (AuthenticationException e) {  
  38.     log.info(e.getMessage());  
  39.     this.addActionError(getText("login.failure"));  
  40. }  
  41.   
  42. if (this.hasErrors()) {  
  43.     log.info("login erro ...");  
  44.     return ERROR;  
  45. }  



配置, 登陆跳转基本没用到, 注意 filterChainDefinitions, 
Java代码   收藏代码
  1. "shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
  2.     "securityManager" ref="securityManager"/>  
  3.       
  4.     "loginUrl" value="/index.jsp"/>  
  5.     "successUrl" value="/home.jsp"/>  
  6.     "unauthorizedUrl" value="/unauthorized.jsp"/>   
  7.       
  8.       
  9.       
  10.       
  11.     "filters">  
  12.           
  13.             "authc">  
  14.                    class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"/>  
  15.                  
  16.           
  17.        
  18.     "filterChainDefinitions">  
  19.                    
  20.             # static file chains  
  21.             /js/* = anon  
  22.             /css/* = anon  
  23.             /img/* = anon  
  24.             /images/* = anon  
  25.             /applets/* = anon  
  26.               
  27.             # login/logout chain  
  28.             /login.action = anon  
  29.               
  30.             # some example chain definitions:  
  31.             #/admin/** = authc, roles[ptAdmin]  
  32.             /docs/** = authc, perms[document:read]  
  33.               
  34.             /** = user  
  35.             # more URL-to-FilterChain definitions here  
  36.           
  37.       
  38.   

2012年9月11日 15:19
  • Comment添加评论
0 0

1.力推 Filter 过滤器, 
2.后台判断根据权限跳转页面 

2012年9月11日 12:38
  • Comment添加评论
0 0

最简单的办法到success页面进行判断,然后不同的用户再重定向到不同的页面。

2012年9月11日 12:19

你可能感兴趣的:(shiro)