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配置到过滤器。

时间: 2024-10-22 11:31:58

Springsecurity3.1.3配置多个登陆页面的相关文章

Struts2文件配置 登陆页面

Struts 版本号 struts-2.3.16.3 web.xml 配置 <?xml version=”1.0″ encoding=”UTF-8″?> <web-app version=”3.0″ xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://java.sun.com/xml/ns/jav

基于AD认证 创建自定义登陆页面

前言:记得我接触的第一个SharePoint项目中,就有要求要定制登陆页面,理由嘛,很简单,客户说是就是:不过当时真的是难倒了不少同学,貌似到项目结束了,这个页面都没做好额.难得这两天有点时间,我就把这笔旧账翻出来看看,学习学习.不过话说回来,本以为这方面的资料会比较少,但是没想到其实挺多,度娘也可以搜的到的额(虽然我用的不是度娘). 首先是应用程序的Web.config的配置, 这里我给个参考地址:http://www.cnblogs.com/52life/archive/2013/04/23

django 配置404,500页面

Android Http 客户端编程之GET 说起Http编程,不尽然想起GET和POST两种请求方式,本文以简洁明了的的步骤和说明,将Android中常用的Http编程的方式列举出来,给刚刚在Android路上起步的奋斗者参考和指引,希望快速上手应用Android Http编程的同仁可以先绕过下面一段话. 做一件事之前,我们是否能驻足想一下要做这件事,我们需要做哪些工作,然后在经验中积累出模板思路和步骤,在程序界通常用设计模式来概括这些工作良好的解决方案.有了这些总结积累,这样我们就能举一反三

【java项目实战】Servlet详解以及Servlet编写登陆页面(二)

Servlet是Sun公司提供的一门用于开发动态web网页的技术.Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了. 到底什么是Servlet呢? 通俗一点,只要是实现了servlet接口的java程序,均称Servlet.Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小

登陆页面的搭建

首先仍然是javaScript的处理 function login(){ var th=document.form1; if(th.username.value==""){ alert("用户名不能为空!"); th.username.focus(); return; } if(th.pswd.value==""){ alert("密码不能为空!"); th.pswd.focus(); return; } th.action=

项目中登陆页面的显示

一般在项目中WebContent文件夹下中有个index.jsp页面,里面也就一句话,用于登陆页面的显示. 第一种方式的首页内容例如以下: <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@taglib prefix="s" uri="/struts-tags" %&g

Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置需要注意的问题)

在视频教程中讲请求认证成功后跳转页面的问题是一笔带过的,但是我觉得有必要单独写一篇对应的文章进行叙述. 我用了SSH来整合Shiro,在开发后验证的过程中,每次登陆后Shiro都会跳转到一个不知名js中,但是重点是我上一次访问的地址是: Edit http://localhost:8080/shiro_05/user/login.action 认证之后应该跳转到上一个请求的地址,但是Shiro却跳转到了: http://localhost:8080/shiro_05/user/js/eqmt.j

一步一步实现web程序信息管理系统之二----后台框架实现跳转登陆页面

SpringBoot springboot的目的是为了简化spring应用的开发搭建以及开发过程.内部使用了特殊的处理,使得开发人员不需要进行额外繁锁的xml文件配置的编写,其内部包含很多模块的配置只需要添加maven依赖即可使用,这项功能可谓对开发人员提供了大大的好处.使用springboot只需要简单配置一下就可以完成之前复杂的配置过程.可以到https://start.spring.io/此网站上,下载一个最简单的springboot应用,然后一步一步实现自已的应用. 可以看出当前的稳定版

Linux(Centos)配置OpenSSH无密码登陆

最近在搭建Hadoop环境需要设置无密码登陆,所谓无密码登陆其实是指通过证书认证的方式登陆,使用一种被称为"公私钥"认证的方式来进行ssh登录. 在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的.telnet,因为其不安全性,在linux系统中被搁置使用了. " 公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub: 私钥文