我正在编写一个安全网络应用。我有一个问题。例如,有一个页面叫 "经理(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类。如何让程序了解谁是管理员或不是管理员,并让其查看经理页面?
你可以在你的UserAccount类中使用一个boolean属性,这个属性将持有一个值为--------------。true
如果是管理员,则为false,如果不是管理员,则为false。
public class UserAccount {
private String username;
private String password;
private List<String> roles;
private boolean is_admin;
...}
重定向到经理页面会先查看当前用户是否是管理员,所以如果他不是管理员就会被拒绝。
NB : 我看到你正在使用一个角色列表,所以也许你正在使用一个基于角色的访问控制(如 RBAC 或 RABAC )
在这种情况下,也许你是通过他的角色给管理员权限,所以这里的Filter方法将看到用户的角色列表,并检查它是否包含管理员的角色,如果是,它将重定向到经理页