在使用Sitemesh来装饰我的视图的Spring MVC应用程序中,我想向每个Model
注入WebSecurityExpressionRoot
类型的名为 sec 的安全属性。
这样我可以在所有视图中调用hasAnyRole(),hasAuthority()...这样管理员就可以通过底层模板引擎(Thymeleaf BTW)来呈现额外的东西。
带有被覆盖的postHandle(...)的自定义HandlerInterceptorAdapter
似乎是Spring MVC实现此目的的方式,但似乎我的主Sitemesh装饰器有点窃取我的安全属性,因为每当我尝试某些视图中的引用为null。
但是只有我的一个控制器受影响后才会显示的视图
与mvc:view-controller
映射确实具有 sec 属性。
我正在考虑写一个Filter
来隐藏秒到当前的HttpServletRequest
来解决这个问题,但我可能会遗漏一些东西。
提前致谢!
答案 0 :(得分:0)
你确定mvc:view-controller
观点/路径正在击中拦截器吗?
另外,我不知道Thymeleaf,但是使用JSP(例如,JstlView
)使Spring MVC将Model复制到Request属性(为了呈现视图) - 事实上Sitemesh也得到了我认为,通过请求属性的值是一个结果。