Java Servlet 如何通过用户角色过滤页面?

问题描述 投票:0回答:1

我正在编写一个安全网络应用。我有一个问题。例如,有一个页面叫 "经理(JSP)"。我只想让管理员看到这个页面。

当用户登录网站,会话创建。

if(dao.check(uname, pass)) {
        UserAccount user = new UserAccount();
        user.setUsername(uname);
        HttpSession session = request.getSession();
        session.setAttribute("username", uname);
        response.sendRedirect("welcome.jsp");
    }

下面是UserAccount类。

public class UserAccount {
private String username;
private String password;
private List<String> roles;

public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public List<String> getRoles() {
    return roles;
}
public void setRoles(List<String> roles) {
    this.roles = roles;
}

}

我有一个实现Filter的Filter类。如何让程序了解谁是管理员或不是管理员,并让其查看经理页面?

java servlets
1个回答
0
投票

你可以在你的UserAccount类中使用一个boolean属性,这个属性将持有一个值为--------------。true 如果是管理员,则为false,如果不是管理员,则为false。

public class UserAccount {
private String username;
private String password;
private List<String> roles;
private boolean is_admin;
...}

重定向到经理页面会先查看当前用户是否是管理员,所以如果他不是管理员就会被拒绝。


NB : 我看到你正在使用一个角色列表,所以也许你正在使用一个基于角色的访问控制(如 RBACRABAC )

在这种情况下,也许你是通过他的角色给管理员权限,所以这里的Filter方法将看到用户的角色列表,并检查它是否包含管理员的角色,如果是,它将重定向到经理页

© www.soinside.com 2019 - 2024. All rights reserved.