Spring Security Grails:如何自定义/login/authenticate至会话检查动作?
解决方案
要实现自定义提交路径并在调用时执行会话检查,你可以按以下步骤操作:
1. 创建自定义控制器动作
首先在你项目的控制器(比如自己的LoginController)里新增一个动作,专门用来处理会话检查,完成后再转发到插件的认证接口:
class LoginController { def customAuthenticate() { // 这里添加你的会话检查逻辑 if (!session.user) { // 会话无效时的处理,比如提示并跳回登录页 flash.message = "会话已过期,请重新登录" redirect(action: 'index') return } // 会话检查通过后,转发到插件的authenticate接口 forward(controller: 'login', action: 'authenticate', plugin: '你的插件名称', params: params) } }
记得把'你的插件名称'替换成实际的插件ID,确保能正确定位到插件内的控制器。
2. 修改表单的提交目标
把原来的<g:form>标签修改为指向你刚创建的自定义动作:
<g:form controller="login" action="customAuthenticate" class="form"> <!-- 原表单内容保持不变即可 --> </g:form>
额外小贴士
- 如果会话检查逻辑需要复用,建议抽成拦截器(Interceptor),这样无需在每个动作里重复写代码,拦截器会自动在指定动作执行前完成检查。
- 这里用
forward而不是redirect,是因为转发是服务器内部跳转,能保留原表单参数,同时直接复用插件的认证逻辑;如果用重定向,浏览器地址栏会更新,还需要手动传递参数。
内容的提问来源于stack exchange,提问作者Nikhil Shrestha
相关产品推荐
相关产品推荐

