Czerwiec
08
2009

JBoss Seam – autoryzacja na podstawie roli

Słowa kluczowe: , | Kategorie: Seam Framework
No Gravatar

Dawno nie pisałem nic nowego, a jeszcze więcej czasu minęło od ostatniego wpisu na temat Seam. Niestety – jak większość programistów – cierpię ostatnio na brak wolnego czasu, więc w najbliższym czasie mogę nieco zaniedbywać bloga, ale dzisiaj przekażę nieco wiedzy.

Wspomnę nieco o zabezpieczaniu dostępu do wybranych metod komponentów na podstawie ról. Co prawda ten rodzaj autoryzacji daje niewielkie możliwości, lecz czasem się przydaje.

Najprostrzym sposobem zabezpieczania komponentów jest wykorzystanie adnotacji org.jboss.seam.annotations.security.Restrict. Jednak sama adnotacja odwołuje się do szczegółowych uprawnień. Dlatego należy wskazać za pomocą odpowiedniego parametru, że chodzi o sprawdzenie roli zalogowanego użytkownika:

@Restrict("#{s:hasRole('rolename')}")
public void someMethod() {
}

Sposób jest trochę skomplikowany. Na szczęście rolą, dla której najczęściej należy przypisać uprawnienia na stałe, jest administrator (admin). Tutaj zamiast używać @Restrict, można wykorzystać inną adnotację – org.jboss.seam.annotations.security.Admin:

@Admin
public void adminOnlyMethod() {
}

Ale dla wszystkich, którzy chcieliby w podobny sposób sprawdzać przynależność użytkownika do innej roli, mam dobrą wiadomość – Seam pozwala zdefiniować własne adnotacje służące do autoryzacji:

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@RoleCheck
public @interface SomeRole {
}

Dzięki wykorzystaniu adnotacji org.jboss.seam.annotations.security.RoleCheck można zagwarantować, że użytkownik należy do roli somerole, używając adnotacji @SomeRole:

@SomeRole
public void someMethod() {
}

I na tym zakończę omawianie autoryzacji w oparciu o role. Następnym razem przejdę wreszcie do uprawnień.

Napisz Komentarz

*