Широ Секьюрити, несколько областей, какие данные авторизации берутся?

Я использую две области в своем Java-приложении, защищенном безопасностью shiro. Один поддерживает мой OAuthToken, а другой поддерживает UsernamePasswordToken. Теперь, когда мои пользователи аутентифицируют себя с помощью OAuthToken, вызывается метод doGetAuthenticationInfo моего OAuthRealm, но вызывается метод doGetAuthorizationInfo моего PasswordRealm. Кто-нибудь может сказать мне, почему?

С уважением Крис


person Coxer    schedule 03.12.2012    source источник


Ответы (1)


Попробуйте переопределить метод isPermitted() в вашем Царстве. Широ проверяет каждую объявленную область с помощью этого метода, разрешено ли текущей области авторизовать пользователя или нет. Вы можете реализовать этот метод как-то так:

/**
 * {@inheritDoc}
 */
@Override
public boolean isPermitted(PrincipalCollection principals, String permission) {
    if (principals.fromRealm("realm name").isEmpty()) {
        return false;
    }
    else {
        return super.isPermitted(principals, permission);
    }
}
person Ilja Hämäläinen    schedule 12.12.2012