我正在使用Servlets和JPA创建一个Web应用程序。我有一个用户表,用于存储用户名,密码和角色。我想为这些用户创建登录和用户注册功能,以便某些用户可以访问我的某些内容。 当我准备好通过Servlet规范以及Tomcat(我使用的容器)时,我遇到了两种定义系统用户和角色的方法。
Tomcat规范建议我可以使用Realms绑定到另一个数据库,以便我可以选择使用SSO。 Servlet有自己的方法使用web.xml定义用户和角色,例如基本身份验证,Servlet容器也是如此,使用Realms。
但是在Servlet和Container中创建用户和角色似乎是系统管理员会做的事情。我正在寻找的是自我注册。
上面的这个问题突出了我对这些方法的困惑,我不知道我想要进行的方式是正确还是安全? 有人可以解释这些身份验证方法之间的差异吗? 为什么选择一个而不是另一个? 对于J2E模型,我的计划是使用自我注册一个坏主意还是不安全?
答案 0 :(得分:1)
如果您将用户ID和密码及角色存储在数据库中并根据该数据验证用户输入,则此后您将自行处理。这意味着,以后当您可能希望限制对特定用户角色集的特定内容的访问时,您必须针对用户查找存储在db表中的角色并编写允许/限制用户的代码。
但是,如果您将用户“推送”到底层容器,那么容器可以代表应用程序完成大部分工作(这就是关于领域和角色等的东西进来的地方)。理解这一点的一个很好的起点是阅读JAAS
上的教程答案 1 :(得分:0)
我认为你在用户和角色之间感到困惑。在您的web.xml中,您必须将角色与资源相关联,例如“对/ admin的所有请求应具有角色管理员”,然后,您可以在管理工具下创建用户并将该用户指定为适当的角色。