具有多个登录页面的Spring安全性

MCh*_*han 13 security spring spring-security

我使用Spring安全性来保护用户名和密码登录到应用程序管理部分.但是现在我的客户端需要为应用程序客户端部分提供另一个登录屏幕,他们将拥有自己的用户名/密码来登录客户端部分.到目前为止,我已经使用以下spring-security.xml设置成功实现了admin部分登录:

<security:http auto-config="true" use-expressions="true">
    <security:form-login login-page="/login"
        default-target-url="/admin/dashboard" always-use-default-target="true"
        authentication-failure-url="/login/admin?error_msg=wrong username or password" />
    <security:intercept-url pattern="/admin/*" access="hasRole('ROLE_ADMIN')" />        
    <security:logout logout-success-url="/login"/>
</security:http>

<security:authentication-manager>
    <security:authentication-provider
        user-service-ref="adminServiceImpl">
    </security:authentication-provider>
</security:authentication-manager>
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了很多,试图找到我如何添加客户端部分登录屏幕,拦截网址,安全认证提供商但找不到任何信息,所以有人可以帮我任何链接到任何教程/示例,指导如何操作?

谢谢

Mar*_*tör 5

根据Spring Security文档:

从Spring Security 3.1开始,现在可以使用多个http元素为不同的请求模式定义单独的安全过滤器链配置.如果从http元素中省略了pattern属性,则它匹配所有请求.

每个元素在内部FilterChainProxy中创建一个过滤器链,以及应映射到它的URL模式.元素将按声明的顺序添加,因此必须首先声明最具体的模式.

所以,基本上你需要两个<http>元素,每个元素都有不同的pattern属性.

这里有一个详细的教程:https://blog.codecentric.de/en/2012/07/spring-security-two-security-realms-in-one-application/