shiro 登录成功后 不跳转到 successUrl 的问题解决

来源:互联网 发布:手机数据采集程序 编辑:程序博客网 时间:2024/05/23 15:44

1.重写 FormAuthenticationFilter 父类的  issueSuccessRedirect 方法

import javax.servlet.ServletRequest;                                                      

import javax.servlet.ServletResponse;                                                     
                                                                                          
import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;                        
import org.apache.shiro.web.util.WebUtils;                                                
                                                                                          
public class loginFormAuthenticationFilter extends FormAuthenticationFilter {             
                                                                                          
@Override                                                                             
protected void issueSuccessRedirect(ServletRequest request, ServletResponse response) 
throws Exception {                                                            
WebUtils.issueRedirect(request, response,getSuccessUrl(), null, true);            
}                                                                                     
}                                                                                         

  

2. 在 applicationContext-shiro.xml 中配置                                                                                                               

<!-- 定义shiro 的 web 过滤器 -->                                                                                   
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">                           
<!-- 认证提交地址,如果没有认证将会请求此地址进行认证 ,请求此地址将由 formAuthenticationFilter 进行表单认证 -->                               
<property name="loginUrl" value="/user/login"></property>                                                
<!-- 没有权限  将会跳转去的 页面 -->                                                                                 
<property name="unauthorizedUrl" value="/refuse.jsp"></property>                                         
<!-- 认证通过会 要跳转 的页面 -->                                                                                   
<property name="successUrl" value="/user/main"></property>                                               
<!-- 安全管理器  -->                                                                                          
<property name="securityManager" ref="securityManager"></property>                                       
<!-- 配置 重写的 父类方法 issueSuccessFilter  让自己重写的方法起到作用  以防止 登录成功后 不调到 successUrl 的问题 -->                      
<property name="filters">                                                                               
         <map>                                                                                                
             <entry key="authc" value-ref="loginFormAuthenticationFilter"/>                                   
         </map>   
                                                                                           
     </property>                                                                                              
<!-- shiro 过滤器 链配置  -->                                                                                  
<property name="filterChainDefinitions">                                                                 
<value>                                                                                              
<!-- 配置 注销的地址  -->                                                                               
/user/logout = logout                                                                            
<!-- 配置匿名访问  -->                                                                                 
/js/** = anon                                                                                    
/images/** = anon                                                                                
/css/** = anon                                                                                   
/refuse.jsp = anon                                                                               
/fonts/** = anon                                                                                 
<!-- 所有地址 都需要 身份认证 -->                                                                           
/** = authc                                                                                      
</value>                                                                                             
</property>                                                                                              
</bean>                                                                                                      
                                                                                                             
<!-- 配置  -->                                                                                                 
<bean id="loginFormAuthenticationFilter" class="org.aptech.own.shiro.utils.loginFormAuthenticationFilter"/>  

                                                                                        

阅读全文
0 0
原创粉丝点击