• Springsecurity3.1.3配置多个登陆页面


    需求:网站的前台和后台不同的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配置到过滤器。

  • 相关阅读:
    3.JavaWeb过滤器/拦截器/监听器及AOP编程的理解
    flex弹性盒里order属性示例
    flex的align-content、align-items的介绍
    flex的justify-content
    flex属性介绍
    flex模式下的导航条示例
    less变量用法讲解
    css变量的引用
    透视图的设置
    图片飞出效果
  • 原文地址:https://www.cnblogs.com/liuxiaoke/p/4456086.html
Copyright © 2020-2023  润新知