我试图设置一个“创建”视图,其中字段设置为当前登录的用户的ID的hiddenField。你从“springSecurityService.principal.id”属性中获得。春季安全核心插件 - 如何从隐藏字段访问用户ID
我想知道是否可以从模板完全做到这一点,而不是从控制器传递值。例如
<%@ page import="grails.plugins.springsecurity.SpringSecurityService" %>
<% def springSecurityService %>
<html>
...
...
<g:hiddenField name="user.id" value="${springSecurityService.principal.id}"/>
...
我试过这段代码,但最终得到一个引用“主体”属性的NullPointer异常。
有没有办法做到这一点,或者我必须显式传递当前登录用户的ID从“创建”方法?
注意:是的,我知道使用隐藏字段构造POST请求的任何人都是微不足道的。控制器代码中有检查,以确保当前登录的用户只能创建,编辑和删除他们自己的帖子。我的问题更多的是无需输入代码来将当前登录的用户传递给三个不同的视图。
2年后,但嘿:-)。它是不是会渲染一个带有可能被用户更改的id的隐藏字段,并引入安全风险? – Will 2012-09-03 14:08:37
是的,没错。在用户界面上使用登录用户的ID确实是一个糟糕的主意..我绝不会这么做:) – Saurabh 2012-09-18 02:12:58
如果仅用于确定显示控件,则不是风险。您应该仍然在服务器端使用某种ACL或URL限制 – 2012-10-30 12:45:24