Переменная с областью действия сеанса доступа в spring interceptor
Как я могу получить доступ к переменной области сеанса в spring interceptor?
Класс с областью действия сеанса:
@Component
@Scope("session")
public class User {
}
Контроллер:
@Controller
@RequestMapping("/restricted")
@Scope("request")
public class RestrictedController {
@Autowired
private User user;
}
Сервлет диспетчера:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/restricted/*"/>
<bean class="com.interceptors.RestrictedInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
Класс перехватчика:
public class RestrictedInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
}
}
В prehandle я хочу проверить, вошел ли пользователь в систему (некоторые другие проверки также), как я могу получить доступ к пользовательской переменной session scoped здесь? Пользователь Autowiring в классе Interceptor создает исключение.
1 ответ:
Вы должны иметь возможность получить доступ к пользователю в области сеанса, используя следующий код:
request.getSession().getAttribute("scopedTarget.user");Смотрите соответствующий постздесь и
org.springframework.aop.scope.ScopedProxyUtilsкласс.
Comments