1

Spring Security Core に基づく grails セキュリティ プラグインの rememberme 機能を使用します。

私の config.groovy 関連コンテンツは次のとおりです。

// Added by the Spring Security Core plugin:
grails.plugins.springsecurity.userLookup.userDomainClassName = 'org.blah.user.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'org.blah.user.UserRole'
grails.plugins.springsecurity.authority.className = 'org.blah.user.Role'

grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/home'

grails.plugins.springsecurity.rememberMe.persistent = true
grails.plugins.springsecurity.rememberMe.persistentToken.domainClassName = 'org.blah.user.PersistentLogin'

grails.plugins.springsecurity.rememberMe.key = 'blah'
grails.plugins.springsecurity.rememberMe.alwaysRemember = true
// set cookie expiration to one year
grails.plugins.springsecurity.rememberMe.tokenValiditySeconds = 31536000l

同じユーザーが複数のクライアント/ブラウザーからログインするとどうなるかについて質問を受けました。すべてのブラウザーで Cookie を記憶するようにしたい、つまり、ブラウザーごとに 1 回ログインする必要があり、それから先に進むことを記憶したい...そうでない場合、それはデフォルトの動作ですか?それを実現する方法は?

さらに、単一の同時ログインを強制したいと思います。つまり、複数の場所からのログインは許可されますが、ユーザーごとにアクティブなセッションは 1 つだけに制限されます。

4

2 に答える 2

1

プラグインは箱から出してこれを行いません。大まかに言うと、おそらく次のことを行う必要があります。

1)独自のRememberMe認証フィルターを作成します。例: http: //www.to-string.com/2012/07/11/springsecurity-capturing-rememberme-success-event/

2)次に、独自の永続ログイントークンを変更して、IPアドレスやブラウザなどの他のデータをキャプチャし、それらの両方を永続ログイントークンに保存する必要があります。

3)TokenBasedRememberMeServicesを拡張する独自のrememberMeサービスを作成します。Cookieの形式をチェックするための独自のロジックを追加するには、2つのメソッドprocessAutoLoginCookieとmakeTokenSignatureを最小限にオーバーライドする必要があります。

4)resources.groovyですべてを一緒に配線します...

    userDetailsService(com.yourclass.UserDetailsService)

    customRememberMeServices(com.yourclass.CustomRememberMeServices) {
        userDetailsService = ref("userDetailsService")
        key = "key"
    }

    rememberMeAuthenticationFilter(com.yourclass.CustomRememberMeAuthenticationFilter) {
        rememberMeServices = ref('customRememberMeServices')
        authenticationManager = ref("authenticationManager")
    }
于 2012-08-26T13:20:17.997 に答える
0

探しているのは、使用するブラウザーに関係なく、コンピューターごとの認証です。これは、ブラウザーのみを使用して 1 回ログインするだけで安全に行うことは不可能です。

于 2012-08-27T13:46:43.910 に答える