1

可能重复:
JDBC 领域登录页面

大家好,我想创建一个应用程序登录功能,它与 jdbc 领域和自定义登录表单(基于表单的身份验证登录约束方法)捆绑在一起。

请提供链接或任何帮助将不胜感激。

请帮忙。

谢谢。

4

1 回答 1

7

你使用什么样的容器?jBoss?Tomcat?Derby?
您还需要使用持久存储 -> 是的,需要 DBMS。会是哪一个?MySQL?Sysbase?Oracle PL/SQL?MS SQL?

初学者可以在此处获得文档:http:
//tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm

通常,您需要有一个 DB 后端、一个 JDBC-ODBC 驱动程序 (jar) 和一个容器为您进行身份验证。

但是,如果您遇到困难,我将为您提供一些指导和见解,以帮助您。

假设您使用的是 Tomcat 7.0+ 和 MySQL 5.5,请按照以下步骤操作:
起初可能看起来很乏味,但实际上很简单。
首先安装 MySQL 或您想要的其他 DBMS。这里最关键的事情之一是命名和注册 MySQL 服务,安装程序会自动为您完成*。尝试连接到数据库**。
当您成功更改默认 DBMS 特权用户的用户名(root)和密码(“”)。
创建项目架构。
在名为“用户”和“权限”的架构中创建 2 个表。
第一个表(用户)必须有两列:用户名和密码。
第二个(权限)也必须有两列:用户名和角色。
对于初学者来说,两个表都留空。

现在您必须编辑位于 tomcat 的 Catalina(又名 home)conf(iguration) 目录中的 tomcat-users.xml 和 server.xml。
tomcat-users.xml:此文件包含 tomcat 可识别的角色。因此,您将需要添加至少一个这样的角色,例如'client'、'customer'、'unauthenticated'等
。此外,此文件中至少有一个 tomcat 用户名和密码实例,用于手动启动 tomcat或作为服务或通过 IDE。该实例需要插入到数据库中,因此您需要手动添加它(SQL 代码),以便容器对其自身进行身份验证(否则,您将从容器本身获得持久的登录失败)。
服务器.xml:现在,假设您的 JDBC-ODBC 驱动程序已添加到项目的类路径中,注释掉 UserDatabaseRealm

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

并在 LockoutRealm(已经存在)中添加类似的内容

<Realm className="org.apache.catalina.realm.JDBCRealm" connectionURL="jdbc:mysql://localhost:3306/SCHEMA_NAME_IN_DB?user=DB_USER;password=DB_PASS" debug="99" driverName="com.mysql.jdbc.Driver" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="rights" roleNameCol="role"/>

(或者如果您不想拥有 LockOutRealm -> 也将其注释掉然后粘贴上面的 Realm)

SCHEMA_NAME_IN_DB、DB_USER 和 DB_PASS 是您在创建模式并更改 DBMS 特权用户的用户名和密码时设置的值。现在,您需要做的就是在数据库中添加正在运行的tomcat 的实例用户名和密码(role:'manager-script')以及MySQL 特权用户(role:custom ie 'client')。
还添加一两个测试用户进行展示,并将他们与您在 tomcat-users.xml 中手动添加的角色相关联。

最后,您需要编辑项目的 web.xml 文件。您需要提供以下内容:登录配置、安全角色和安全约束。
登录配置:提供登录页面和登录错误页面。
安全角色:在此处添加您手动添加到 users-tomcat.xml 文件的安全角色,并且用户必须具有这些角色才能通过登录访问任何页面。 安全约束:指定哪些页面需要登录用户进行身份验证访问。

示例 (weeeh!)

<security-constraint>

<display-name>URLsConstraintMechanism</display-name>
<web-resource-collection>
<web-resource-name>clientURL</web-resource-name>
<description>Required access to specified URL with client permissions </description>
<url-pattern>/securedURL/index.html</url-pattern>
<http-method>GET</http-method>
<http-method>PUT</http-method>
<http-method>POST</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
...(更多 web-resource-collections 在这里)

<auth-constraint>
<description>Required privileges to access securely constraint URLs.</description>
<role-name>client</role-name>
</auth-constraint>

</security constraint>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/index.html</form-login-page>
<form-error-page>/index_denied.html</form-error-page>
</form-login-config>
</login-config>

<security-role>
<description>Required privileges to access securely constraint URLs.</description>
<role-name>client</role-name>
</security-role>

如果您使用 IDE(尤其是用于 web.xml 的 NetBeans),这将容易得多。

玩得开心!!!祝你好运 :D :) :D

关于 * 和 **:
MySQL 5.5 的安装程序中有 2 个严重的错误。
如果您需要帮助,请查看此 URL:
https

://serverfault.com/questions/214435/error-1067-the-process-terminated-unexpectedly-when-trying-to-install-mysql-on PS:我明天再来添加一些提示。现在,我要睡觉了!xD

于 2011-05-28T04:31:13.933 回答