1

我知道这个问题不是一个好问题,因为它有无数的答案,但这里是:

我是 Java EE 6(在 JBoss AS 7 上)的新手,我来自 Tomcat + spring 世界。我的第一个真正的 web 应用程序类似于一个简单的 jsf jpa hibernate 和 ejb 的 crud。现在我需要使用最简单的登录表单来保护 URL (/admin/*)。我已经有两个名为“User”(用户名、密码、role_id 和其他数据)和“Role”(代码、名称等等)的表(休眠实体)。我可以制作我自己的 LoginController,会话范围来管理登录相关问题,但我不知道怎么说“嘿,它只适用于 /admin 路径!” 所以....我开始阅读有关 web.xml 配置的内容:安全约束、jdbc 领域等。但是,对不起,我还是达不到一个好的知识点,我太沉迷于教程和边做边学了。

你能帮我找到一个带有简单登录表单的示例项目吗?或者至少有一些关于如何将我的登录表单绑定到我的数据库表的教程或一些建议?我不需要 500 页的准确文档。只是试图使“标准”身份验证工作。

4

1 回答 1

1

行。首先,Java EE 标准没有提供认证机制。只有基于角色的身份验证是规范的一部分。所以每一个应用服务器都必须有其自定义的认证机制,这使我们能够使用数据库、LDAP 等来存储用户凭据。

在 JBoss 的情况下,它看起来如下。

(1)您需要在 web.xml 中定义安全约束(有很多教程如何做到这一点)。它告诉哪些 URL 需要登录。您需要定义 login-config 元素以选择用户将如何登录 - 使用浏览器弹出窗口或自定义表单。

(2)您需要在 configuration/standalone.xml 中定义 JBoss 端的 security-domain。例如,请参阅此示例

(3)你需要加入(1)和(2)。这是在 jboss-web.xml 文件中使用应用程序的 WEB-INF 完成的。它看起来或多或少

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
          <security-domain>NAME-OF-DOMAIN-DEFINED-IN-STEP-2</security-domain>
          <context-root>ROOT-OF-YOUR-APP</context-root>
</jboss-web>

我不确定 JBoss 7 的情况如何,但在以前的版本中,您需要添加java:/jaas/前缀,因此安全域内容将是java:/jaas/NAME-OF-DOMAIN-DEFINED-IN-STEP-2.

此外,如果您了解 Spring Framework,则可以考虑使用 Spring Security,绕过 Java EE 机制。

于 2012-05-10T07:21:55.707 回答