2013-05-09 81 views
0

我有兩種類型的管理員。 超級管理員和普通管理員。基於用戶角色的JSF重定向頁面

兩者都從頁面admin.xhtml開始。

我想轉發超級管理員用戶到super-admin.xhtml和正常管理員到normal-admin.xhtml。

如何在JSF中執行此操作(我正在使用Spring Security)?

+0

您想通過在admin.xhtml頁面上重定向到不同頁面的操作? – 2013-05-09 11:46:04

回答

0

我不熟悉JSF,但假設它的引擎蓋就像Spring MVC的JSP應用下的功能,你可以有你的控制器根據用戶持有的角色(一個或多個)提供不同的頁面:

@RequestMapping("/admin.xhtml") 
@PreAuthorize("hasAnyRole('ROLE_ADMIN', 'ROLE_SUPERADMIN')") 
public String getAdminPage(Modelmap model, Principal principal) { 
    Collection<? extends GrantedAuthority> authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities(); 
    for (GrantedAuthority authority : authorities) { 
     if (authority.toString() == "ROLE_SUPERADMIN") { return "superadminpage"; } 
    } 
    //no need to check for admin privileges, since the annotation took care of that 
    //if you're not using annotations (or @PostAuthorize), you'd have to capture the 
    //'admin' role as well, and adjust the return statements accordingly. 
    return "adminpage"; 
} 
相關問題