Как установить role для UserRoleAuthorizationInterceptor и HttpServletRequest?
Добрый день!
В SpringFramework есть перехватчик UserRoleAuthorizationInterceptor, который по роли определяет авторизован пользователь или нет. В нем есть метод, с помощью которого можно задать список ролей, при которых пользователь считается авторизованным.
Под капотом UserRoleAuthorizationInterceptor для проверки роли использует метод isUserInRole() класса HttpServletRequest.
Вопрос: как установить роль?
Допустим, хочу сделать авторизацию. И чтобы после проверки логина и пароля присваивать определенную роль пользователю.
Я тоже когда-то делал, но не по инструкции, а по технологии Servlet-а, который лежит в основе Spring-а. "Под капотом" там ConcurrentHashMap и класс Singleton, который проверяет hashCode в hashMap. На уровне "ядра" Spring, всё это выглядит приблизительно так:
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
public class SerialMAP {
private static final long serialVersionUID = 1L;
private static volatile SerialMAP instance;
public ConcurrentHashMap <String, String> USER_SESSION_KEY; //Key SESSION_USER_KEY; Value: email;
private SerialMAP() {
super();
USER_SESSION_KEY = new ConcurrentHashMap <String, String>();
// Факт наличия юзера в USER_SESSION_KEY == true; Юзер залогинился
cleaner();
}
public static SerialMAP getInstance() {
SerialMAP localInstance = instance;
if (localInstance == null) {
synchronized (SerialMAP.class) {
localInstance = instance;
if (localInstance == null) {
instance = localInstance = new SerialMAP();
}
}
}
return localInstance;
}
private void cleaner() {
// Thread demon. Remove yourself object by Key...
}
public static long getSerialversionUID() {
return serialVersionUID;
}
}