我得到了手写安全性,简单的servlet过滤器,将非授权用户重定向到他们的登录页面。登录控制器在成功认证或主页后将其重定向到请求的URL。这种方法工作正常,唯一的缺点是我必须通过stacktrace将存储在HttpSession中的User对象传递给EJB bean。为什么我应该使用JAAS手写安全性?
现在我重写了一些代码并使用Spring-security作为基于http的身份验证。它与Glassfish JAAS自动集成。
我不需要通过stacktrace传递用户,调用sessionContext.getCallerPrincipal()
就足够了。但主对象只返回我的userName,而不是userId,所以我必须执行另外选择,如果我需要userId为例。
1)有无论如何扩展主体对象,所以它可以存储更多的属性?
2)为什么我应该使用JAAS或Spring Security或其他安全框架,为什么不只是手写servlet过滤器?
编写自己的实现登录模块的更便携,由于它不依赖于额外的服务器配置。只要您考虑到需要手动管理所有安全角色。 – 2013-09-25 10:05:26
另外,JAAS模型假定您的安全模型是基于角色的。情况可能并非如此。安全模型可以完全基于权限(因为角色的定义可以在明天改变)。 我会使用一个简单的servlet过滤器来实现页面级安全性,并使用CDI拦截器来实现方法/类级别的安全性。 – 2014-06-20 19:35:12