9

私はgrailsが初めてです。そして、セッションで作業する必要があります。セッションのドキュメントを見てきました。しかし、コントローラーのどこにコードを配置すればよいかわかりません。学生の作成名 createStudent のページがあります。ここで、ユーザーがセッションに参加しているときにのみ、このページにアクセスできるようにしたいと考えています。さて、どうすればいいでしょうか。ログイン時にユーザーを変数に設定する必要がありますか。誰でもこれについて私を助けてもらえますか?

def index() {
    def user = session["user"]
    if (user){
        redirect(controller: 'admistratorAction', action: 'createUser')
    }else{
        redirect(controller: 'login', action: 'index')
    }

}
4

1 に答える 1

14

session.getAttribute(key)コントローラー内で メソッドとメソッドを使用できsession.setAttribute(key, value)ます。別の方法として、Spring Security Core Pluginなど、すでにこれをうまく処理しているプラ​​グインがあります。

ここには、Spring Security プラグインに関する Peter Ledbrook による優れたチュートリアルがあり、プラグインのドキュメントは少なくとも 1 つの他のチュートリアルにリンクしています。

** 編集 **

あなたが示唆したように、セッションを直接使用するには、ユーザーを以前の時点でセッションに設定する必要があります。例えば:

def setCurrentStudent() {
    def aStudent = [name: "Student1"]
    session["user"] = aStudent
    render "Added $aStudent to the session."
}

Spring Security は、ログイン時にこれを自動的に行います。その後、springSecurityService を使用していつでも現在のユーザーにアクセスできます。

class SomeController {
   def springSecurityService
   def someAction = {
       def user = springSecurityService.currentUser
       …
   }
}
于 2013-06-30T06:44:02.453 に答える