Hallo!
Ich habe folgendes Problem:
Ich habe eine adminboard.jsf auf die sollen, logischerweise, nur Admins zugreifen können.
Dies funktioniert auch schon so einigermaßen, mithilfe eines PhaseListeners, allerdings sobald irgendein Benutzer in die Adressleiste "..../pages/adminboard.xhtml" eingibt, wird ihm die Seite angezeigt, wenn allerdings
"..../pages/adminboard.jsf" eingegeben wird, funktioniert alles einwandfrei und der Benutzer wird normal weitergeleitet.

MyPhaseListener:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MyPhaseListener implements PhaseListener {
 
    public void afterPhase(PhaseEvent pe) {
        try {
            FacesContext fc = pe.getFacesContext();
            UserBean currentUser = UserBean.getUserBean(fc.getExternalContext());
           
            String viewid = fc.getViewRoot().getViewId();
 
            if (viewid.contains("/adminboard") && !currentUser.isAdmin()) {
                nh.handleNavigation(fc, null, "back");
            }
        } catch (NullPointerException npe) {
            //do nothing
        }
    }
 
    public void beforePhase(PhaseEvent pe) {
        //do nothing
    }
 
    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }
}

UserBean:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class UserBean {
 
    private String username;
    private String password;
    private boolean admin = false;
    private boolean loggedIn = false;
    private static final long ADMINISTRATION_GROUP = 1L;
  
 
    /**
     * Loggt den User ein.
     * 
     * @return Navigationrule
     */
    public String login() {
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            User user = DBAccess.login(username, password);
        } catch (SQLException e) {
            return "login_failed";
        }
 
        if (user == null) {
            loggedIn = false;
            return "login_failed";
        }
        loggedIn = true;
 
        if (user.getUserGroup() == ADMINISTRATION_GROUP) {
            admin = true;
        }
        return "login_successfull" ;
    }
 
....sehr sehr viele Getter/Setter Methoden....
 
}

Möglicherweise können einige von euch mir einen Lösungsansatz nennen
lg