我创建了一个带有Spring MVC和Spring Security的用户注册模块。创建帐户后,我为"未验证"的用户设置了我自己的状态。用户点击电子邮件中提供的链接后,将验证该帐户。用户必须登录才能进行验证。
处理用户未验证电子邮件地址但仍登录系统的情况的最佳做法是什么。你总是展示一个未经证实的"帐户页面并阻止用户导航到其他地方?这可以做到 - 怎么样?另一个选项,我认为是限制功能但仍允许用户浏览网站。
要实现第一种情况,我想我会使用自己的过滤器吗? 对于第二种情况,我是否需要动态角色来限制访问?
从一些专家建议来看。
答案 0 :(得分:2)
建议是为已经过验证的用户添加角色,例如ROLE_VERIFIED
。使用此角色保护URL:s。有access denied handler可以判断用户是否需要验证帐户(当角色需要但是丢失时,处理程序将被命中)。
Config可以看起来像:
<http>
<intercept-url pattern="/pagesforverified/**" access="ROLE_VERIFIED" />
<access-denied-handler ref="myAccessDeniedHandler" />
<!-- rest of configuration -->
</http>
问题:向已登录的用户添加角色时,安全上下文不会自动更新,因为它会缓存在会话中。