spring - 在 Spring 拦截器中访问 session 范围变量

标签 spring spring-mvc

如何在 Spring 拦截器中访问 session 范围变量?

session 范围类:

@Component
@Scope("session")
public class User {
}

Controller :

@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 {
    }
}

在预处理中,我想检查用户是否已登录(还有其他一些检查),我如何在这里访问 session 范围的用户变量? Interceptor 类中 Autowiring 用户抛出异常。

最佳答案

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

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

请参阅相关帖子 hereorg.springframework.aop.scope.ScopedProxyUtils 类。

关于spring - 在 Spring 拦截器中访问 session 范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32283450/

相关文章:

java - JSON 发布到 Spring Controller

java - spring MVC中 Controller 如何将列表结果返回到当前jsp

spring - 使用@WebMvcTest 时如何排除使用 Spring 的 AutoConfiguration 添加的类?

mysql - 运行spring boot应用程序时出错

Java-TimerTask-org.hibernate.HibernateException : No Session found for current thread

java - 无法在使用 Spring 开发的 Rest API 中接收 Double 数据类型

java - Spring MVC Controller 作为 Liferay Portlet 和 Servlet

java - 在 Spring 中使用 REST 调用来暴露服务层

java - 在 Spring 中使用 AutoWire 时如何处理新的实现?

java - 有条件地将数据发送到 Spring Batch 中的多个写入器