我试图在“创建” 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/