在webapp中进行用户身份验证的位置?

时间:2012-12-25 16:14:12

标签: java web-applications spring-mvc

在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模式下并使用过滤器保护(如果用户未经过身份验证时捕获和重定向)这些更好吗?这样控制器更干净,只需返回所请求的页面。

在这种情况下,什么是合适的设计?

3 个答案:

答案 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过滤器。