Grails2.0.3のSpringSecurityプラグインを使用しており、ユーザーがログインしていない場合は、各ページのヘッダーにログインフォームを追加しようとしています。ログインボタンをクリックすると、コントローラーにPOSTしようとします。リクエストを処理するためのコードが実際にはないアクション。これが私がしていることです
BlogPostController
class BlogPostController {
static defaultAction = "home"
/**
* Summary of the most recent blog posts.
*/
def home() {
// snip
}
def show() {
// snip
}
}
UrlMappingsにはいくつかの追加エントリがあります
"/blog/$year/$month/$day/$title"(controller: "blogPost", action: "show")
"/blog/$action?/$id?"(controller: "blogPost")
"/"(controller:"blogPost")
grails-app / views / layout / main.gsp
<!doctype html>
<html lang="en" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><g:layoutTitle default="My Blog"/></title>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<g:render template="/banner" />
<g:layoutBody/>
<r:layoutResources />
</body>
</html>
grails-app / views / _banner.gsp
<div id="banner">
<r:img class="logo" dir="images" file="logo.png" />
<div class="login">
<sec:ifLoggedIn>
<sec:username/>
</sec:ifLoggedIn>
<sec:ifNotLoggedIn>
<g:form name="banner-login" method="POST" action="${resource('file': 'j_spring_security_check')}">
<ul>
<li>
<label for="j_username">Username:</label>
<g:textField name="j_username"/>
</li>
<li>
<label for="j_password">Password:</label>
<g:passwordField name="j_password"/>
</li>
</ul>
<div class="button-panel">
<g:submitButton name="banner-login-button" value="Log in" />
</div>
</g:form>
</sec:ifNotLoggedIn>
</div>
</div>
Config.groovy
grails.plugins.springsecurity.auth.loginFormUrl = '/'
ログインボタンをクリックすると、「/ myblog / blog /%2fmyblog%2fj_spring_security_check」に投稿しようとしますが、失敗します。BlogPostControllerのホームアクションがそのリクエストの処理方法を知らないためだと思います。
私が間違っていることについて何か考えはありますか?
ありがとう!