如何处理具有 spring 安全性的未验证帐户?
How to handle unverified accounts with spring security?
我已经使用 Spring MVC 和 Spring 安全性创建了一个用户注册模块。创建帐户时,我为 "Unverified" 的用户设置了自己的状态。用户单击电子邮件中提供的 link 后,将验证帐户。用户必须登录才能进行验证。
处理用户未验证电子邮件地址但仍登录系统的情况的最佳做法是什么。您是否总是显示 "unverified" 帐户页面并阻止用户导航到其他地方?这可以做到——怎么做?我认为另一种选择是限制功能但仍允许用户浏览该站点。
要实现第一种情况,我想我会使用自己的过滤器吗?
对于第二种情况,我是否需要动态角色来限制访问?
参考一些专家的建议。
建议为已验证的用户添加角色,例如ROLE_VERIFIED
。使用此角色保护 URL:s。有一个 access denied handler 可以判断用户是否需要验证帐户(当需要角色但缺少角色时将命中处理程序)。
配置可以类似于:
<http>
<intercept-url pattern="/pagesforverified/**" access="ROLE_VERIFIED" />
<access-denied-handler ref="myAccessDeniedHandler" />
<!-- rest of configuration -->
</http>
陷阱:向登录用户添加角色时,安全上下文不会自动更新,因为它缓存在会话中。
我已经使用 Spring MVC 和 Spring 安全性创建了一个用户注册模块。创建帐户时,我为 "Unverified" 的用户设置了自己的状态。用户单击电子邮件中提供的 link 后,将验证帐户。用户必须登录才能进行验证。
处理用户未验证电子邮件地址但仍登录系统的情况的最佳做法是什么。您是否总是显示 "unverified" 帐户页面并阻止用户导航到其他地方?这可以做到——怎么做?我认为另一种选择是限制功能但仍允许用户浏览该站点。
要实现第一种情况,我想我会使用自己的过滤器吗?
对于第二种情况,我是否需要动态角色来限制访问?
参考一些专家的建议。
建议为已验证的用户添加角色,例如ROLE_VERIFIED
。使用此角色保护 URL:s。有一个 access denied handler 可以判断用户是否需要验证帐户(当需要角色但缺少角色时将命中处理程序)。
配置可以类似于:
<http>
<intercept-url pattern="/pagesforverified/**" access="ROLE_VERIFIED" />
<access-denied-handler ref="myAccessDeniedHandler" />
<!-- rest of configuration -->
</http>
陷阱:向登录用户添加角色时,安全上下文不会自动更新,因为它缓存在会话中。