java - JDBC Realm 表单例份验证如何

标签 java forms jdbc realm

Possible Duplicate:
JDBC Realm Login Page




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

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

请帮忙。

谢谢。

最佳答案

您使用哪种容器?jBoss?Tomcat?Derby?
您还需要使用永久性存储->是,需要DBMS。它将是哪一个?MySQL,Sysbase,Oracle PL / SQL,MS SQL?

文档可供初学者使用:
http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm
通常,您需要具有数据库后端,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识别的角色。因此,您将需要添加至少一个这样的角色,例如“客户端”,“客户”,“未经身份验证”等。
此外,此文件中至少有一个tomcat用户名和密码实例,当您手动或作为服务或通过IDE启动tomcat时会使用该实例。该实例需要插入数据库中,因此您需要手动添加该实例(SQL代码),以便容器对自身进行身份验证(否则,容器自身将出现永久性登录失败)。
server.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的实例用户名和密码(角色:“ manager-script”)以及MySQL特权用户的角色(角色:custom,即“ 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>
        ...(此处有更多网络资源收藏)
       <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

附注:我明天会再添加一些提示。现在,我要睡觉了! xD

关于java - JDBC Realm 表单例份验证如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6159341/

相关文章:

Java多线程-无需等待的锁定

java - 获取相关 ID 为 92 的元数据时出错 : {myTest=UNKNOWN_TOPIC_OR_PARTITION}

java - 可执行(可同步)构建输出,无需打包

php - 比较两个表单复选框是否已选中

JavaScript RangeError - 使用 jQuery.post 时超出最大调用堆栈大小

javascript - 使用 selenium WebDriver 禁用 javascript?

javascript - 2 使用 Jquery 的表单

java - 使用 JDBC 和 MySQL 更新大型结果集

java - 如何将 scala play 应用程序连接到 postgres 数据库

java - 如何解决MySQL jdbc套接字关闭SocketException?