Я пытаюсь создать простую область авторизации для Apache Shiro для тестирования:
public class MyAuthRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
SimpleAuthorizationInfo sai = new SimpleAuthorizationInfo();
sai.addRole("kota");
sai.addStringPermission("koko:*:view");
return sai;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
return null;
}
}
Как видите, его не волнует, кто пользователь, - он просто возвращает роль и определенное разрешение.
Теперь я пытаюсь проверить это в следующем фрагменте:
if(SecurityUtils.getSubject().hasRole("kota")) {
out.write("kota ");
}
if(SecurityUtils.getSubject().hasRole("kota2")) {
out.write("kota2 ");
}
if(SecurityUtils.getSubject().isPermitted("koko:toto:view")) {
out.write("koko ");
}
if(SecurityUtils.getSubject().isPermitted("koko2:toto:view")) {
out.write("koko2 ");
}
И я получаю следующий вывод
kota koko koko2
(
Так что похоже, что роль настроена правильно (поскольку пользователь имеет только роль kota), но разрешения нет (почему печатается koko2 ???) !!!!
Кто-нибудь может мне объяснить, что я делаю не так?
TIA!