Spring Security 自定义流程
Posted
技术标签:
【中文标题】Spring Security 自定义流程【英文标题】:Spring security custom flow 【发布时间】:2015-12-15 20:59:30 【问题描述】:我正在使用 spring security 3.2 创建一个 spring mvc (spring 4)。我有一个使用自定义 UserDetailsService 的登录页面,效果很好。我想在网站上添加一个新功能,增加一些需求。当有人添加需求时,他将收到一封带有按钮的电子邮件,通过他可以管理此需求,包括为网站创建会话。我想为他创建一个帐户.. 并从此按钮的 url 给他身份验证,这将由控制器处理。我该怎么做?创建一个带有硬编码密码的帐户?身份验证提供者怎么样?有需求的用户无法通过正常的登录页面登录。 在数据库中,该类型的帐户将具有与普通帐户不同的状态。希望你明白我需要什么...
【问题讨论】:
为什么不创建普通用户,给用户一个新角色,然后在配置中指定该url只能由具有该角色的用户访问。 通过这个按钮我想给他创建一个会话,这样他就可以访问网站上的任何页面。会有很多人会在没有帐户的情况下添加需求,因此他们可以登录并发送确认电子邮件 这样的东西对你有用吗?? ***.com/a/15119876/3981536 。您可以为数据库中的类似情况创建一个用户,然后使用其凭据以编程方式登录。 它对我有帮助,但一点也没有。我不知道怎么办这个帐户不能在正常登录中使用..它应该有什么密码?因为用户没有插入任何东西.. 您可以保留一个较长的随机值作为密码(以避免任何人使用该密码登录!)。另外,您只需要在代码中存储特定的用户名。然后您可以从您的代码中查询密码。并使用该凭据以编程方式进行登录。这样用户就不必插入任何东西。 【参考方案1】:您可以尝试为所有此类用例创建一个通用用户(称为guest
或类似名称)。如果您使用他们提供的受信任的 url 验证了用户,您可以使用硬编码的用户名 (guest) 查询数据库,并获取验证详细信息,如 passoword
、roles
等。然后您可以通过编程方式验证用户。这样,用户只需要给你一个 url,你的代码就可以从数据库中获取真实的身份验证细节。
关于身份验证部分,您可以参考以下链接。 ***.com/a/15119876/3981536
【讨论】:
以上是关于Spring Security 自定义流程的主要内容,如果未能解决你的问题,请参考以下文章
spring-security 个性化用户认证流程——自定义登录成功/失败的处理