2

セキュリティのために Apache Shiro 1.2 を使用して vaadin ベースのプロジェクトを開発しています。「記憶」機能に問題があります。CookieRememberMeManager を RememberMeManager として使用しようとしましたが、認証後に Subject.isRemembered() は常に false を返します。

public class ApplicationSecurityManager extends DefaultSecurityManager {

    public ApplicationSecurityManager(Realm singleRealm) {
        super(singleRealm);
        setRememberMeManager(new CookieRememberMeManager());
    }
}

GuiceFilter の init メソッドに SecurityManager を設定しています。

    final Realm realm = new ApplicationSecurityRealm();
    final SecurityManager securityManager = new ApplicationSecurityManager(realm);
    SecurityUtils.setSecurityManager(securityManager);

アプリケーションにログインしようとすると、「remember me」機能以外はすべて正常に動作します。コード:

    final Subject currentUser = SecurityUtils.getSubject();

    UsernamePasswordToken token = new UsernamePasswordToken(username,password);
    token.setRememberMe(rememberMe);
    currentUser.login(token);

アプリケーションには例外がなく、デバッグを使用してこの問題を解決できませんでした。Apache Tomcat 7.0.40 を使用していますが、Cookie を禁止できますか?

Ps 私の英語で申し訳ありません。私は英語圏の国ではありません。

4

1 に答える 1

1

1年経ちましたが、この質問はかなりの数のビューを獲得しているので、いくつかの情報を投稿しようと思いました.

Subject.isRemembered() は、Shiro では少しトリッキーです。サブジェクトに有効な「Remember Me」設定 (Cookie など) があり、サブジェクトが認証されていない場合にのみ true を返します。詳細はこちら: http://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/subject/Subject.html#isRemembered()

したがって、Remember Me は正常に機能していると思われますが、Subject.isRemembered() に対する期待は、メソッドが実際に行うことと一致しません。

于 2015-04-28T15:04:29.083 に答える