authentication - 成功验证后,Grails Spring Security会强制用户进入特定屏幕

标签 authentication grails groovy spring-security

这是场景。我有两个对象Users(带有用户名/密码)和UserInfo,其余数据与用户有关。 Users是具有数千条记录的旧表,而UserInfo是相当新的表。我希望在用户首次登录时获得尽可能多的UserInfo

我想在首次登录后强制用户进入自定义屏幕,并要求UserInfo数据。在新屏幕中获得“必需”数据后,我不会显示它,直到用户自愿要在“配置文件”下填写数据。

由于应用程序有多个入口点,因此我不想更新所有 Controller 以进行检查。

有没有办法我可以使用Spring Security filter或成功登录后执行的操作?我看了看ApplicationListener<AuthenticationSuccessEvent>,但是它不能解决问题,就好像我将链接复制粘贴到浏览器中一样,它使我可以直接到达目的地而无需询问“额外信息”。

简而言之,我希望在每次登录后进行检查,如果失败,则不允许用户进入该应用程序。无论他如何尝试进入。

最佳答案

在您的Config.groovy中,配置Spring Security的defaultTargetUrl并告诉它始终重定向到那里:

grails.plugins.springsecurity.successHandler.alwaysUseDefault = true
grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/userInfo/edit'

UserInfoController的编辑操作中,您可以检查是否存在必填字段(也许是userInfo.validate()?),如果存在,则重定向至任意位置,也许是'/',否则将呈现编辑信息 View 。

关于authentication - 成功验证后,Grails Spring Security会强制用户进入特定屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848668/

相关文章:

c# - 通过复选框以编程方式为 MVC 4 中的用户分配角色

grails - Controller 中的PageRenderer

grails - Grails 2.2.5-域对象未保存,但没有错误

grails - Intellij 12.1.6(社区),正在创建Grails项目,已捕获:groovy.lang.MissingPropertyException:无此类属性:用于类:BuildConfig的grails

java - Groovy 使用字符串获取 json slurper 对象中的对象

gradle - 如何在Gradle中使用类似于ant的文件集和pathconvert的东西

包含的 PHP + MySQL 登录

java - GWT-RPC 还是 RequestFactory 用于身份验证?

asp.net - 无需身份验证的 URL 重写

jquery - 将 grails remotefunction 与 jquery 一起使用