1

在 Spring MVC Web 应用程序中,除了 Home、About、Service Terms 等之外的每个页面只有在用户登录后才能查看,哪里是进行身份验证的最佳位置?在过滤器级别、控制器级别还是两者兼而有之?

我问这个是因为现在我正在编写我的控制器,我一直在重复很多代码,比如:

if (currentUser.isAuthenticated()) // and possibly currentUser.hasPermission("some")
    // do logic and return proper page
else 
    // return to home or login page

将所有需要身份验证的页面放在某个 url 模式下并使用过滤器保护(如果用户未通过身份验证,则捕获并重定向)它们会更好吗?这样控制器就更干净了,并且只返回请求的页面。

在这种情况下,正确的设计是什么?

4

3 回答 3

1

你需要一个拦截器。几年前,关于身份验证和会话处理[Spring MVC 3 Global Request Mapping] ,我有一个类似的问题。以下是我解决和实现它 的方法[使用拦截器进行身份验证会话处理的 Github 源]

于 2012-12-25T16:22:12.487 回答
0

遵循Spring Security 参考指南 中给出的大纲,即使您不使用该项目本身。这是关于如何在 webapp 中实现安全性的好建议。

于 2012-12-25T16:29:17.447 回答
0

最好使用 spring security 来保护 spring 应用程序。您在 xml 中配置您的安全性,它会为您的应用程序创建 servlet 过滤器。

于 2012-12-26T23:19:02.213 回答