Java spring安全中的多重登录表单

Java spring安全中的多重登录表单,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我是spring的新手,在我的项目中,我需要通过SpringSecurity向管理员和用户添加两个登录表单。到目前为止,我能够成功创建一个登录页面。这是我的 spring security.xml <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-

我是spring的新手,在我的项目中,我需要通过SpringSecurity向管理员和用户添加两个登录表单。到目前为止,我能够成功创建一个登录页面。这是我的 spring security.xml

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-security.xml,
        /WEB-INF/spring-database.xml
    </param-value>
</context-param>


<!-- Spring Security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

web.xml

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-security.xml,
        /WEB-INF/spring-database.xml
    </param-value>
</context-param>


<!-- Spring Security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

org.springframework.web.context.ContextLoaderListener
上下文配置位置
/WEB-INF/spring-security.xml,
/WEB-INF/spring-database.xml
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*

如何修改代码以使用多个登录页?

您可以有任意多个登录页,但只有一个默认登录页,如果用户未经身份验证,spring security会重定向到该登录页-无论如何,如果用户想以管理员身份登录,在身份验证之前很难猜测

唯一的规则是,所有登录页面必须将相同的字段提交到相同的url,并且该url由spring security处理

我唯一的问题是为什么需要多个登录页面?spring的安全方式是将权限附加到登录名,而不是您的登录方式

从SpringSecurity3.1开始,现在可以使用多个http 元素定义单独的安全筛选器链配置 不同的请求模式。如果从中省略模式属性 一个http元素,它匹配所有请求。创建无担保 模式是这种语法的一个简单示例,其中模式是 映射到空筛选器链


更多详情请参见

我同意你的看法,但只是出于好奇。想象一下,像all/admin/**这样的请求被重定向到“admin”登录页面,而其他受正常保护的请求将被重定向到正常登录页面。像这样的事情是可能的还是只有通过不同的HTTP过滤器才能实现?@sodik确实可以通过使用定义专用登录页面的
集团来实现。但您必须记住,一旦通过身份验证,只有安全属性(角色)将用于允许访问,而不是用户的身份验证方式。