在Spring MVC Web应用程序中,只有在用户登录时才能查看除Home,About,Service of Terms等之外的每个页面,哪里是进行身份验证的最佳位置?在过滤器级别,控制器级别,或两者兼而有?
我问这个是因为现在我正在编写控制器,我一直在重复很多代码:
if (currentUser.isAuthenticated()) // and possibly currentUser.hasPermission("some")
// do logic and return proper page
else
// return to home or login page
将所有需要身份验证的页面放在某个url模式下并使用过滤器保护(如果用户未经过身份验证时捕获和重定向)这些更好吗?这样控制器更干净,只需返回所请求的页面。
在这种情况下,什么是合适的设计?
答案 0 :(得分:1)
你需要一个拦截器。几年前,关于身份验证和会话处理 [Spring MVC 3 Global Request Mapping],我有类似的问题。以下是我解决和实施它的方法 [Github source for authentication session handling using interceptor]。
答案 1 :(得分:0)
关注the outline given in the Spring Security reference guide,即使您不使用该项目本身也是如此。关于如何在webapp中实现安全性,这是一个很好的建议。
答案 2 :(得分:0)
最好通过弹簧安全保护弹簧应用。 您在xml中配置安全性,并为您的应用程序创建servlet过滤器。