一尘不染

Spring拦截器中访问会话范围的变量

spring-mvc

如何在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类中自动装配用户会引发异常。


阅读 347

收藏
2020-06-01

共1个答案

一尘不染

您应该可以使用以下代码访问您的会话范围的用户:

request.getSession().getAttribute("scopedTarget.user");

请参阅此处org.springframework.aop.scope.ScopedProxyUtils课程的相关文章。

2020-06-01