java - 来自不同网址时的不同登录

标签 java security spring authentication spring-security

我有一个使用自定义身份验证管理器进行登录的应用程序。它只是搜索名为“用户”的表。

<sec:authentication-manager alias="authenticationManager">
    <sec:authentication-provider user-service-ref="userDAOImpl">
        <sec:password-encoder hash="sha" />
    </sec:authentication-provider>
</sec:authentication-manager>

问题是现在我需要进行另一次登录,必须在表“ExternalUsers”中搜索。

应用程序将以这种方式工作:

  1. 如果请求来自/external/** 这样的 url,我需要通过一个authenticationManager2 来搜索“ExternalUsers”表。这些用户只能访问/external/** 网址
  2. 如果请求来自另一个网址,我需要通过一个authenticationManager1(我现在拥有的)来搜索用户表。这些用户可以访问除与/external/** 模式匹配的 URL 之外的所有 URL

Users 和ExternalUsers 表中可能存在具有相同用户名的用户。这就是为什么我需要根据它来自的 url 设置不同的登录名的原因。两次登录必须在同一应用程序中。

在Spring中是否可以根据请求的URL来配置两个不同的authenticationManager?

谢谢

最佳答案

我不认为 spring 提供了开箱即用的功能。但是您可以实现自己的身份验证提供程序(实现 AuthenticationProvider 接口(interface)),根据某些逻辑将身份验证委托(delegate)给两个标准 spring 身份验证提供程序。

关于java - 来自不同网址时的不同登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648767/

相关文章:

c# - SecurityAttribute.Unrestricted 问题

java - 如何获取javax.rs.ws.core.Response的主体(内容)?

Java - OpenCV java.lang.NoClassDefFoundError 异常

java - 数据和表示分离

security - 为什么要将端口 80 转发到 8080?

javascript - jsFiddle 如何允许并执行用户定义的 JavaScript 而不会造成危险?

java - 将 bean 注入(inject)到 Spring 托管上下文之外的类中

带有 tomcat localhost 的 Java Websocket

java - 从文件中读取单词后,按字母顺序在 java 中创建单词数组

java - 如何打印/记录 Apache HttpClient 请求查询字符串