2

失敗したログインのエラー メッセージが表示されないという経験をした人はいますか?

grails 1.3.7 アプリを grails 2.1.1 にアップグレードしていますが、Spring セキュリティ コア機能に 2 つの問題があります。

まず、無効なログインを試みると、認証は失敗しますが、エラー メッセージは表示されず、フラッシュ メッセージに {} のみが表示されます。

次に、このような方法を使用して、アクティブなセッションの現在の数を取得していました。増加するだけでログアウトを認識しないため、もはや正確ではありません。

def getCurrentSessionCount(){
    def sessioncount = 0
    sessionRegistry.getAllPrincipals().each{
        sessioncount += sessionRegistry.getAllSessions(it, false).size()
    }
    return sessioncount;
}
4

1 に答える 1

1

さて、これは LoginController でのエラー メッセージの表示方法の違いでした。1.3.7 以前のセキュリティ プラグインでは、コードは次のようになります。

msg = SpringSecurityUtils.securityConfig.errors.login.expired

ただし、2.1.1 およびアップグレードされた Spring セキュリティ プラグイン 1.2.7.3 の場合、コードは次のようなコンテキストを使用する必要があります。

msg = g.message(code: "springSecurity.errors.login.disabled")

セッション カウントは、セッション リスナーを追加するために必要な web.xml への変更と関係がありますが、新しい Spring 3.0 では移動されたため、新しいエントリは次のようになります。

<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener> 
于 2013-01-11T02:09:57.333 に答える