шов 3 безопасность и роли

Я создаю приложение, используя шов 3 и cdi. Я начал с примера для части безопасности:

public @ConversationScoped class UserAction {
  public @Admin void deleteUser(String userId) {
   // code
  }
}

Оно работает. Если у моего пользователя есть роль администратора, то у него есть доступ. Но как мне реализовать ситуацию, когда у пользователя может быть то одно правило, то другое? Например: если мой пользователь @Admin или @Student, он может получить к этому доступ, но если он @Teacher, он не может.

Спасибо.

Келли


person Kelly Goedert    schedule 16.12.2011    source источник


Ответы (1)


Я думаю, вам нужно создать собственный метод авторизации который выполняет необходимые вам проверки ролей:

import org.jboss.seam.security.annotations.Secures;

public class Restrictions {      
  public @Secures @Admin boolean isAdmin(Identity identity) {
    return identity.hasRole("admin", "USERS", "GROUP");
    // Here, you would put in logic for "if my user is
    //     @Admin or @Student he can access this, but 
    //     if he is a @Teacher he cannot" instead.
  }
}
person bzlm    schedule 18.12.2011