我们对 Java、Spring 和 Spring Security 是全新的,但对开发并不陌生。我们已经能够创建一个基于 Spring Security 的 Thymeleaf 登录页面,该页面使用 JNDI 数据源通过 BCrypt 加密密码连接到我们的 SQL Server 数据库。所有这些都在顺利进行。但是,客户端需要两阶段登录。第一页请求公司 ID,然后加载带有该公司特定图形和文本的登录页面,让用户知道他们没有登录钓鱼网站。该登录页面随后会请求用户名和密码。
我们已在此处和整个网络上进行了广泛搜索,但尚未找到执行此操作的可靠方法。我们认为我们可能必须创建一个自定义的 UserDetailsService
和 AuthenticationManager
,但仍然看不到如何实现它,以便:
- 用户不能绕过第一个登录屏幕直接进入第二个屏幕
- SpringSecurity 控制着这两个页面
我们看到了一个关于将 Spring WebFlow 与 Spring Security 一起使用的建议,但没有一些起点,不知道 WebFlow 如何工作或适用于这种情况。这个网站对我们到达这个阶段帮助很大,但现在我们受阻了。非常感谢您提供的任何帮助。
最佳答案
我猜你的数据库将所有公司的所有用户存储在一张表中。您不会将来自不同公司的用户分隔到不同的表中。如果是这种情况,您只需要一个登录页面。事情是,你有一个用户输入他的公司 ID 的第一页,你使用这个 ID 来获取 JPG 和 Logo 并将它们放在登录页面上。
请注意,这没有任何安全利益。因为任何人都可以输入其他公司的 ID 并获得不同公司的 Logo ,但仍可以尝试登录。这是您的要求吗?
问题是您的登录页面需要根据之前输入公司 ID 的页面显示 Logo 和 JPG。如果没有给出,则显示错误。所以你的登录页面需要有一些逻辑和输入——如果你把它做成一个 JSP 就很容易实现....
HTH
关于java - 使用 Spring Security 3.2.x 进行两页登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863785/