我正在使用 spring MVC,并且我有一个必须构建的自定义身份验证/安全系统。
NOTE: I know of spring security, but my requirements were to do this in a custom way so please not looking for suggestions about using spring's security modules.
当用户登录系统时,它会创建一个会话 cookie。当用户访问页面时,拦截器会查找该 cookie 的存在,并在 mysql 中查找会话 guid,如果存在,它会加载一些数据并将其存储在请求的属性中。
现在对于用户必须登录的页面,如何在控制器级别限制访问?
我可以在拦截器中做到这一点:
if url.contains("projects/") ...
如果我想限制对 ProjectController 中的登录用户的访问,但这并不是我真正想做的事情。
但是我正在寻找一个可以在控制器级别添加的注释,或者可能以某种方式创建一个 BaseController ,所有需要登录用户的控制器都将从该控制器继承。
对于这样的事情,我有什么选择?
在 ASP.NET 中,我创建了一个 baseController,并且该控制器有一个事件循环,并且在操作前触发的事件中我检查了用户是否已登录。
那么寻找有关spring mvc的建议吗?
更新
例如,在 ASP.NET 中,您有 2 种方法,一种在控制器的操作方法之前触发,另一种在之后触发:
Controller.OnActionExecuting
Controller.OnActionExecuted
http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.onactionexecuting.aspx
所以在 OnActionExecuting 中,我实际上可以确切地看到我在哪个控制器中,以及哪个动作将以编程方式被调用,而不是通过查看请求 URL 然后进行字符串比较以查看它是否是特定控制器等.
所以在这种情况下,我可以简单地检查 cookie 或我的请求属性等中的内容。
这是一种更稳定的方法,spring有类似的吗?