首页 > 编程语言 > 详细

Springsecurity3.1.3配置多个登陆页面

时间:2015-04-25 16:34:44      阅读:235      评论:0      收藏:0      [点我收藏+]

需求:网站的前台和后台不同的url需要不同的登陆页面,不同的异常捕获方式。

spring-security3.1以后的版本支持多个<http>标签,因此本文所采用的方式就是使用两个,实际上是三个<http>标签实现上述功能(为什么是是要三个将会在下面加以说明)

spring-security.xml配置如下

<!-- 后台管理 -->
    <http pattern="/admin/**" authentication-manager-ref="authmanager" >      
        <intercept-url pattern="/admin/login**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />  
        <form-login login-page="/admin/login.jsp"
         authentication-failure-url="/admin/login_fail.jsp"
          default-target-url="/admin/index.jsp"
        login-processing-url="你的Url"/>  
    </http>
    <!-- 前台 -->
    <http pattern="/mycenter/**" authentication-manager-ref="authmanager">      
        <intercept-url pattern="/front/login**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/mycenter/**" access="ROLE_USER" />  
        <form-login login-page="/front/login.jsp"
         authentication-failure-url="/front/login_fail.jsp"
          default-target-url="/front/index.jsp"
        login-processing-url="你的Url"/>  
    </http>

按照上述方法配置后,会出现程序代码中,无法获取当前登录用户信息的情况。SecurityContextHolder.getContext()为空。尤其是不在前台后台正则匹配下的url的程序段中。

出现这种情况是因为两个http拦截了两种特定的url表达式,那么其余的url将不会被springsecurity拦截,因此也就没办法再相应url的方法中获得当前登录用户的信息。

解决方法是在加上第三个<http>标签,匹配任意的url来把其余的url配置到过滤器。

 

Springsecurity3.1.3配置多个登陆页面

原文:http://www.cnblogs.com/liuxiaoke/p/4456086.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!