java - 容器与 Servlet 身份验证

标签 java jsp tomcat servlets

我正在使用 Servlet 和 JPA 创建一个 Web 应用程序。我有一个存储用户名、密码和角色的用户表。我想为这些用户创建登录和用户注册功能,以便某些用户可以访问我的某些内容。 当我准备好通过 Servlet 规范以及我使用的容器 Tomcat 时,我遇到了两种定义系统用户和角色的方法。

Tomcat 规范建议我可以使用 Realms 绑定(bind)到另一个数据库,这样我就可以根据需要选择使用 SSO。 Servlet 有自己的使用 web.xml 定义用户和角色的方式,例如基本身份验证,Servlet 容器也是如此,使用 Realms。

但是在Servlet和Container中创建用户和角色似乎是系统管理员会做的事情。我正在寻找的是自助注册。

上面的这个问题突出了我对这些方法的困惑,我不知道我想要进行的方式是否正确或安全? 有人可以解释这些身份验证方法之间的区别吗? 为什么选择一个而不是另一个? 我计划使用自注册对于 J2E 模型来说是个坏主意还是不安全?

最佳答案

如果您将用户 ID、密码和角色存储在您的数据库中并根据这些信息验证用户输入,那么您以后就只能靠自己了。这意味着稍后当您可能想要限制一组特定用户角色对特定内容的访问时,您将必须针对用户查找存储在数据库表中的角色并编写允许/限制用户的代码.

但是,如果您将用户“推送”到底层容器,则容器可以代表应用程序执行大部分操作(这就是涉及领域和角色等的地方)。理解这一点的一个很好的起点是阅读关于 JAAS 的教程。

关于java - 容器与 Servlet 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818356/

相关文章:

java - 将链接值传递给 bean

java - 每个 JavaDoc 页面上的 Logo

java - 在 Lucene 中搜索提供 0 个结果

jsp - 服务方法中的 request.getPathInfo() 怎么会返回 null?

java - 如何在 netui 数据转发器中使用 if 子句

Tomcat/TomEE : TomEE GUI page 404 error

java - 无法在Java中添加ActionListener

java - 没有到主机的路由异常 - 尝试远程连接到 Postgresql 数据库

java - Tomcat 连接器架构、线程池和异步 servlet

java - 将 Spring Shell 与 Tomcat 结合使用