Я хотел бы инкапсулировать Apache Shiro в среду Servlet. Я хочу создать MySecurityUtils и использовать Shiro SecurityUtils.getSubject в статическом методе. Мой вопрос заключается в том, является ли это правильным способом использования метода SecurityUtils.getSubject в статическом методе. Это может вызвать проблемы в многопоточной среде сервлетов?Encapsulation Shiro Subject
MySecurityUtils.java
import org.apache.shiro.subject.Subject;
import org.apache.shiro.SecurityUtils;
public class MySecurityUtils {
public static MyUser getUser() {
Subject currentUser = SecurityUtils.getSubject();
MyUser myUser = new MyUser(currentUser);
...
}
}
MyUser.java
public class MyUser {
// ... constructors
public boolean isPermitted(..) {subject.isPermitted(...)}
}
Я хотел бы добавить дополнительную проверку приложения к объекту MyUser. MyUser будет неизменен, и методы метода Subject будут доступны через методы delagate. Я думаю, что в таком случае это было бы хорошо или? –
Поскольку вы возвращаете новый экземпляр каждый раз из своего класса 'MySecurityUtils', будьте осторожны, если вам нужно получить пользователя более одного раза за запрос. Вы будете работать на разных экземплярах MyUser. –