Java Сервлет Как фильтровать страницы по роли пользователя - PullRequest
0 голосов
/ 25 мая 2020

Я кодирую веб-приложение безопасности. И у меня проблема. Например, есть страница с названием «Менеджер (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. Как программа узнает кто админ или нет и увидит страницу менеджера?

1 Ответ

0 голосов
/ 25 мая 2020

Вы можете использовать логический атрибут в своем классе UserAccount, этот атрибут будет содержать значение true, если используется администратор, и false, если он не

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

Перенаправление к менеджеру страница сначала увидит, является ли текущий пользователь администратором или нет, поэтому ему будет отказано, если он не админ


NB: я вижу, что вы используете список ролей, поэтому, возможно, вы используете контроль доступа на основе ролей (например, RBA C или RABA C)

В этом случае, возможно, вы предоставляя права администратора через его роли, поэтому здесь метод Filter увидит список ролей пользователя и проверит, содержит ли он роль администратора, и если да, он будет перенаправлен на страницу менеджера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...