可能重复:
JDBC 领域登录页面
大家好,我想创建一个应用程序登录功能,它与 jdbc 领域和自定义登录表单(基于表单的身份验证登录约束方法)捆绑在一起。
请提供链接或任何帮助将不胜感激。
请帮忙。
谢谢。
可能重复:
JDBC 领域登录页面
大家好,我想创建一个应用程序登录功能,它与 jdbc 领域和自定义登录表单(基于表单的身份验证登录约束方法)捆绑在一起。
请提供链接或任何帮助将不胜感激。
请帮忙。
谢谢。
你使用什么样的容器?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