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



0

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

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

有的用户登录成功后要跳转到别的页面,怎么实现?
shiro 
2012年9月11日 11:48

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

0 0

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

2012年9月26日 14:11
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. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
  2.     <property name="securityManager" ref="securityManager"/>  
  3.     <!-- override these for application-specific URLs if you like: -->  
  4.     <property name="loginUrl" value="/index.jsp"/>  
  5.     <property name="successUrl" value="/home.jsp"/>  
  6.     <property name="unauthorizedUrl" value="/unauthorized.jsp"/>   
  7.     <!-- The 'filters' property is not necessary since any declared javax.servlet.Filter bean  -->  
  8.     <!-- defined will be automatically acquired and available via its beanName in chain        -->  
  9.     <!-- definitions, but you can perform instance overrides or name aliases here if you like: -->  
  10.     <!-- -->  
  11.     <property name="filters">  
  12.         <map>  
  13.             <entry key="authc">  
  14.                    <bean class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"/>  
  15.                </entry>  
  16.         </map>  
  17.     </property>   
  18.     <property name="filterChainDefinitions">  
  19.         <value>           
  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.         </value>  
  37.     </property>  
  38. </bean>  

2012年9月11日 15:19
0 0

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

2012年9月11日 12:38
0 0

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

2012年9月11日 12:19
    0

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

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

    有的用户登录成功后要跳转到别的页面,怎么实现?
    shiro 
    2012年9月11日 11:48

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

    0 0

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

    2012年9月26日 14:11
    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. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
    2.     <property name="securityManager" ref="securityManager"/>  
    3.     <!-- override these for application-specific URLs if you like: -->  
    4.     <property name="loginUrl" value="/index.jsp"/>  
    5.     <property name="successUrl" value="/home.jsp"/>  
    6.     <property name="unauthorizedUrl" value="/unauthorized.jsp"/>   
    7.     <!-- The 'filters' property is not necessary since any declared javax.servlet.Filter bean  -->  
    8.     <!-- defined will be automatically acquired and available via its beanName in chain        -->  
    9.     <!-- definitions, but you can perform instance overrides or name aliases here if you like: -->  
    10.     <!-- -->  
    11.     <property name="filters">  
    12.         <map>  
    13.             <entry key="authc">  
    14.                    <bean class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"/>  
    15.                </entry>  
    16.         </map>  
    17.     </property>   
    18.     <property name="filterChainDefinitions">  
    19.         <value>           
    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.         </value>  
    37.     </property>  
    38. </bean>  

    2012年9月11日 15:19
    0 0

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

    2012年9月11日 12:38
    0 0

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

    2012年9月11日 12:19
      • 0
        点赞
      • 5
        收藏
        觉得还不错? 一键收藏
      • 1
        评论

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论 1
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值