grails - Spring security 核心插件 - 如何从隐藏字段访问用户 ID

标签 grails spring-security grails-plugin gsp hiddenfield

我试图在“创建” View 中设置一个 hiddenField,其中该字段设置为当前登录用户的 ID。您从“springSecurityService.principal.id”属性中获得。

我想知道是否可以仅从模板中执行此操作,而不是从 Controller 传递值。例如

<%@ page import="grails.plugins.springsecurity.SpringSecurityService" %>
<% def springSecurityService %>

<html>
...
...
<g:hiddenField name="user.id" value="${springSecurityService.principal.id}"/>
...

我尝试了这段代码,但最终得到了一个引用“主体”属性的 NullPointer 异常。

有什么方法可以做到这一点,还是我必须从“创建”方法中明确传递当前登录用户的 ID?

注意:是的,我知道对于任何人来说,构建带有篡改隐藏字段的 POST 请求都是微不足道的。 Controller 代码中有检查,以确保当前登录的用户只能创建、编辑、删除自己的帖子。我的问题更多地与不必输入代码将当前登录的用户传递到三个不同的 View 有关。

最佳答案

尝试使用以下语法

<g:hiddenField name="user.id" value="${sec.loggedInUserInfo(field:"id")}"/>

关于grails - Spring security 核心插件 - 如何从隐藏字段访问用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208612/

相关文章:

grails - 如何从Request中检索cxf Web服务中的 header 参数?

grails - grails:如何使用复合ForeignKey映射一对多关系

spring-security - Spring-boot Spring-Security session 超时

grails - 在 grails 插件中将 mime 映射添加到 web.xml 的正确语法

grails - 在PeriodSelector AMChart中发送Ajax请求

grails - 使用OS环境中的用户名和密码配置grails数据源

java - Spring Security OAuth2授权流程

spring - 未定义名为 springSecurityFilterChain 的 bean

Grails 从公司防火墙后面安装插件来阻止访问

grails - Grails spring-security-ldap连接到本地主机:389