我知道这个问题不是一个好问题,因为它有无数的答案,但它是这样的:
我是JavaEE6(基于Tomcatas7)的新手,我来自JBoss + spring的世界。我的第一个真正的web应用程序类似于一个简单的crud,其中包含jsf、jpa、hibernate和ejb。现在我需要用最简单的登录表单保护一个URL (/admin/*)。我已经有两个表(hibernate实体),名为"User“(用户名、密码、role_id和其他数据)和"Role”(代码、名称等)。我可以创建自己的LoginController,session作用域来管理与登录相关的问题,但我不知道如何说“嘿,它只适用于/admin路径!”所以..。我开始阅读有关web.xml配置的内容:安全约束、jdbc领域等等。但是,很抱歉,我仍然不能达到一个很好的知识点,我太沉迷于教程和边做边学。
你能帮我找到一个简单的登录表单的示例项目吗?或者至少是一些关于如何将我的登录表单绑定到我的数据库表的教程或一些建议?我不需要500页的准确文档。我只是想让“标准”身份验证工作起来。
发布于 2012-05-10 15:21:56
好的。首先,Java标准没有提供身份验证机制。只有基于角色的身份验证是规范的一部分。因此,每个应用程序服务器都必须有自己的自定义身份验证机制,它使我们能够使用数据库、LDAP等来存储用户凭据。
在JBoss的情况下,它看起来像这样。
(1)你需要在你的web.xml中定义安全约束(有很多关于如何做到这一点的教程)。它会告诉您哪些URL需要登录。您需要定义login-config元素,以便选择用户将如何登录-使用浏览器弹出窗口或自定义表单。
(2)您需要在configuration/standalone.xml中定义JBoss端的安全域。例如,参见this example。
(3)你需要加入(1)和(2)。这是通过应用程序的WEB-INF在jboss-web.xml文件中完成的。它看起来或多或少
<?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框架,你可以考虑使用Spring Security,绕过Java机制。
https://stackoverflow.com/questions/10528072
复制相似问题