如何在Spring拦截器中访问会话作用域变量?
会话范围的类:
@Component @Scope("session") public class User { }
控制器:
@Controller @RequestMapping("/restricted") @Scope("request") public class RestrictedController { @Autowired private User user; }
分派器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类中自动装配用户会引发异常。
您应该可以使用以下代码访问您的会话范围的用户:
request.getSession().getAttribute("scopedTarget.user");
请参阅此处和org.springframework.aop.scope.ScopedProxyUtils课程的相关文章。
org.springframework.aop.scope.ScopedProxyUtils