フィールドが現在ログインしているユーザーのIDに設定されている「作成」ビューでhiddenFieldを設定しようとしています。 "springSecurityService.principal.id"プロパティから取得します。Springセキュリティコアプラグイン - 非表示フィールドからユーザーIDにアクセスする方法
コントローラから値を渡すのではなく、テンプレートからこれを排他的に行うことが可能かどうか疑問に思っていました。例えば
<%@ page import="grails.plugins.springsecurity.SpringSecurityService" %>
<% def springSecurityService %>
<html>
...
...
<g:hiddenField name="user.id" value="${springSecurityService.principal.id}"/>
...
このコードを試しましたが、 "プリンシパル"プロパティを参照してNullPointer例外が発生しました。
これを実行する方法はありますか、または現在ログインしているユーザーのIDを「作成」メソッドから明示的に渡す必要がありますか?
注:はい、私は誰でもdoctored hiddenフィールドでPOSTリクエストを作成することは自明であることを知っています。コントローラコードには、現在ログインしているユーザーが自分の投稿を作成、編集、削除できることを確認するチェックがあります。私の質問は、現在ログインしているユーザーを3つの異なるビューに渡すためのコードを入力する必要がないことです。
2年遅れますが、ちょっと:-)。ユーザーによって変更され、セキュリティ上のリスクが発生する可能性のあるIDを持つ非表示のフィールドを表示しませんか? – Will
はい、そうです。ログインしたユーザーのIDをUIで使用するのは本当に悪い考えです。私はそれを決してしません:) – Saurabh
コントロールを表示するかどうかを判断するためにのみ使用すると危険ではありません。あなたはまだサーバー側で何らかのACLまたはURL制限を使用している必要があります –