在spring拦截器中访问会话范围变量

时间:2015-08-29 06:48:59

标签: spring spring-mvc

如何在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类中的自动装配用户抛出异常。

1 个答案:

答案 0 :(得分:2)

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

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

查看相关帖子hereorg.springframework.aop.scope.ScopedProxyUtils类。