5

私はindex.gspそれがページを提示しています。そのページには、登録するためのボタンとログインするためのボタンがあります。ログインすると、ログインに問題がなければ、アプリによって再び に移動しindex.gspます。ユーザーがログインしている場合、これらのボタンが消え、代わりに「こんにちは、[ユーザー名]」と言う必要があります。私はこのコードを試しましたが、うまくいきません (決してログインしません):

コントローラーで:

def dologin(){

    def user=Usuario.findByUsernameAndPassword(params.username,springSecurityService.encodePassword(params.password) )

    if(user){
        redirect (controller:'usuario', action:'index')
    }else{

        flash.message=message(code:'default.user.not.found', args:[message(code: 'params.username', default:'Usuario'), params.id])
    def userlogged = springSecurityService.getCurrentUser()
                render view: 'index', model: [user: user]
}

}

index.gsp 内 (完全ではなく、重要な部分のみ):

<sec:ifNotLoggedIn>

<div id="buttons">
    <div id="login"><a href="loginurl">Login</a>
    </div>
    <div id="register"><a href="registerurl">Registrarse</a>
    </div>
</div>
</sec:ifNotLoggedIn>
<sec:ifLoggedIn>

<div id="greet">Hello!</div> 

</sec:ifLoggedIn>

どんな助けでも大歓迎です。

ありがとうございました。

4

3 に答える 3

13

春のセキュリティ認証プロセスではなく、独自の認証を行っているようです。<sec:ifLoggedIn>タグは、認証を処理するスプリング セキュリティに依存しています。

Spring セキュリティ アプリでこれを処理する通常の方法は、ログイン リクエストを に投稿することです/j_spring_security_check。これは、舞台裏でUsernamePasswordAuthenticationFilterによってフィルタリングされます。

Grails と春のセキュリティ プラグインは、開始点として使用できるLoginControllerandを提供することで、これを比較的簡単にします。auth.gspスクリプトを実行するs2-quickstart(ユーザーおよびロール ドメイン オブジェクトも作成する) か、spring-security-coreテンプレート ディレクトリからコピーします。

于 2012-07-19T15:23:21.057 に答える
1

簡単にやってみた

<sec:ifNotLoggedIn> // DO SOMTHING</sec:ifNotLoggedIn>
<sec:ifLoggedIn> // DO SOMTHING</sec:ifNotLoggedIn>
于 2018-01-18T06:13:08.507 に答える
0

最後に簡単にしました

<g:if test="${session.user==null}">
<!-- Display buttons-->
</g:if>
<g:if test=${session.user!=null">
    <div id="greet"> Hello, ${session.user.username}!</div>
</g:if>

もっと簡単だと思います。しかし、あなたの答えをありがとう、アタイラー。

于 2012-07-20T07:58:57.467 に答える