我有一个手写的安全性简单的Servlet过滤器,将未经授权的用户重定向到其登录页面。 登录控制器在成功验证或主页后将其重定向到所请求的URL。 这种方法很好用,唯一的缺点是我必须通过堆栈跟踪将存储在HttpSession中的User对象传递给EJB Beans。
现在我重写了一些代码并使用基于http的Spring-security进行身份验证。 它已自动与Glassfish JAAS集成。
我不再需要通过堆栈跟踪传递用户,调用sessionContext.getCallerPrincipal()
就足够了。 但是主体对象只返回用户名而不是用户ID,因此如果需要用户ID,则必须执行附加选择操作。
1)是否有任何方法可以扩展主体对象,以便它可以存储更多属性?
2)为什么要使用JAAS或Spring Security或另一个安全框架,而不是手写的servlet过滤器?