【问题标题】:Spring MVC - Session Attributes - Should that be passed in all controllers as ModelAttributeSpring MVC - 会话属性 - 是否应该作为 ModelAttribute 在所有控制器中传递
【发布时间】:2013-07-28 05:00:50
【问题描述】:

我是 @SessionAttributes 维护 SpringMVC。

说,@SessionAttribute("user")

目前在所有控制器中将对象作为ModelAttribute传递,需要使用SessionObject“user”之类的

Class controller{

public ModelAndView method1(@ModelAttribute("user")){ }
public ModelAndView method2(@ModelAttribute("user")){ }
public ModelAndView method3(@ModelAttribute("user")){ }
public ModelAndView method4(@ModelAttribute("user")){ }

}

这是唯一的方法吗?

还有其他方法吗?这样我就可以拥有一个基本控制器,它可以通过扩展基本控制器来返回会话对象。

【问题讨论】:

    标签: java spring session spring-mvc


    【解决方案1】:

    我在一些项目中使用的是这样的:

    String user = (String) hsr.getSession().getAttribute("user");
    

    如果您正在寻找某种身份验证,我建议您开始使用 spring security 或其他可以根据角色或身份验证状态过滤掉页面的身份验证机制。

    【讨论】:

      【解决方案2】:

      不确定您的确切要求是什么,但是如何创建一个过滤器/拦截器,从会话中读取值并将其存储在 ThreadLocal 中,以便控制器稍后访问

      【讨论】:

        【解决方案3】:

        需要访问@SessionAttributes的控制器需要添加如下注解。

        @Controller
        @SessionAttributes({"user"})
        public class Controller {
           .............
        }
        

        HTH

        【讨论】:

        • 没关系!!!我在问,我是否应该在各处反复传递这个作为论点??
        • 不,您不要t have too. But in my experience, for security reasons I have to because I dont 想获取另一个用户的数据。会话让我可以访问该用户的唯一数据。 HTH
        • 请讲道理
        猜你喜欢
        • 1970-01-01
        • 2016-11-18
        • 1970-01-01
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-08
        相关资源
        最近更新 更多