私はGrailsを初めて使用し、1つはログイン用、もう1つはエクスプローラー用のコントローラーが2つしかないプロジェクトに取り組んでいます(左側のパネルにツリーのような構造が表示され、右側にフォルダーの内容が表示されるWindowsエクスプローラーに似ていますテーブル)
ユーザーがアプリケーションにアクセスすると、ユーザーがログインしていない場合はログイン画面が表示され、ログインしている場合はエクスプローラー画面が表示されます。
しかし、これはセッション タイムアウトの場合には当てはまりません。セッションがタイムアウトし、ユーザーがエクスプローラー画面の右側のパネルにあるリンクをクリックすると、右側のパネルにログイン画面が表示されるとします。
SecurityFilter を使用してログイン画面にリダイレクトしています。
SecurityFilters.groovy
デフフィルター = {
loginCheck(controller:'*', action:'*') {
before = {
if (!session.idpuser && actionName != "login") {
redirect(controller: "user", action: "login")
return false
}
}
}
}
userController.groovy
デフログイン () {
if (request.get) {
return false
}
......
redirect(controller: "explorer", action: "file")
}
explorerController.groovy
def generateFiles = {
.....
render(template: 'list', model: [ dirList: dirList])
}
UrlMappings.groovy
静的マッピング = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(action:"file", controller: "explorer")
"500"(view:'/error')
}
login.gsp が右側のパネルにレンダリングされていると思う理由は、ユーザーが右側のパネルのリンクをクリックすると「generateFiles」アクションが呼び出され、login.gsp が explorer.gsp 内のテンプレートとしてレンダリングされるためです。しかし、私はそれを修正する方法がわかりません:(
誰かがこの問題で私を助けてくれれば幸いです。助けてください!!!!!