如何在spring拦截器中访问会话范围变量?
会话范围类:
@Component
@Scope("session")
public class User {
}
控制器:
@Controller
@RequestMapping("/restricted")
@Scope("request")
public class RestrictedController {
@Autowired
private User user;
}
Dispatcher servlet:
<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 {
}
}
在预处理中,我想检查用户是否已登录(其他一些检查),如何在此处访问会话范围的用户变量? Interceptor类中的自动装配用户抛出异常。
答案 0 :(得分:2)
您应该能够使用以下代码访问会话范围的用户:
request.getSession().getAttribute("scopedTarget.user");
查看相关帖子here和org.springframework.aop.scope.ScopedProxyUtils
类。