2009-10-08 168 views
2

我期望完成的是为我的Spring MVC应用程序处理身份验证模型的过滤器(或类似)。我的应用程序也托管在Google App Engine上。Spring MVC自定义身份验证

此应用程序的身份验证可能倾向于非常动态,并且权限不会完全适合预定义的角色结构。这些权限将绑定到我的控制器上的不同操作方法。理想情况下,我希望能够注释这些权限,但我打开其他建议。

我发现没有太多有关如何完成此操作的信息。理想情况下,我希望能够拦截对控制器操作的调用,并能够读取注释并进行相应处理。我所希望的是,这里的某个人对Spring MVC有更多的了解,并且我可以在其中注入一些自定义代码,并且能够指引我朝着正确的方向发展。

回答

3

我仍然会使用Spring Security来做到这一点。它可能没有一个100%适合你的登录方案的类,但这就是继承的原因。写你自己的。您可以轻松摆脱基于ROLE的DecisionManager,并使其适合您的范例。

根据你的意见你检查了Spring中的MethodInterceptor吗?它会创建一个代理,它将拦截对代理类的任何方法的调用,并允许您根据所需的任何代码运行或禁止该方法。在Spring Security中有一个AbstractSecurityInterceptor,但我觉得它很难使用,对于大多数访问决策,我认为它是过度的。

因此,我会使用Spring Security来验证用户身份(并填充SecurityContext),然后使用拦截器隔离您希望保护的控制器中的方法。

+0

我辞职写我自己的代码实现,但我发现Spring Security缺少文档,如果你有任何链接,你会发现有用它将不胜感激。谢谢。 – bdorry

+0

当然,我知道我花了一段时间才完成了这一切 - 而且一些文档有些模糊。如果看起来他们认为有多种方式可以做某件事,那么可能有。你可以用更多的细节来扩充你的问题,也许我可以指出你正确的方向。 – Gandalf

+0

为了更加简明扼要,我真正需要的是能够拦截一个动作并对已认证的用户执行一些快速检查。这些检查将从数据库读取权限并根据业务执行重定向。 这些信息可以从App Engine的内置服务中获得,也可以通过使用我自己的专有服务获得,但我目前无法找到拦截对控制器操作调用的方法。 – bdorry