当前位置: 首页 > 面试题库 >

JDBC领域表单身份验证如何

傅星光
2023-03-14
问题内容

大家好,我想创建一个与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用户名和密码实例,当您手动启动tomcat时使用或作为服务或通过IDE。该实例 _ 需要_
插入数据库中,因此您需要手动添加该实例(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,则不要添加->也注释掉它然后粘贴上面的领域)

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>
…(这里有更多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]( https://serverfault.com/questions/214435/error-1067-the-process-
terminated-unexpectedly-when-trying-to-install-mysql-on)

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



 类似资料:
  • 在DropWizard中,我可以设置基本身份验证,如下所示(在impl中): 领域在DropWizard中是什么意思,在中指定它有什么意义?它创造了一些东西与这个领域在引擎盖下?

  • 问题内容: 我一直在忙于在GlassFish 3.1上设置身份验证,尤其是JDBC领域。我一直在假设以下条件下进行操作: “用户”表包含登录名(“电子邮件地址”)和密码(“密码”) “组”表包含组名称(“名称”)的列表 “ User_Group”表匹配用户和组。 但是,我无法在任何地方配置“ User_Group”表,因此我想知道服务器如何将用户按组进行匹配。不用说它没有用。但仔细检查后发现: “

  • 我用Java和spring mvc框架编写了一个简单的应用程序。 我使用tomcat领域身份验证表单auth-method对用户进行身份验证,并将其重定向到自己的仪表板。 例如,login.jsp上的用户输入用户名和密码,现在在控制器中检查名称并通过和使用request.login(用户名,密码)方法,然后将重定向客户端发送到仪表板页面。 现在我创建了一个restful api,用于检测来自服务器

  • 里格斯, Kim Zeevaarders荷兰

  • 我们的项目包括一个JavaFX应用程序,它通过RMI协议调用JEE服务器。我们使用Payara应用服务器,一个Glassfish分叉。我们想使用带有数据库的JAAS来管理授权给用户的身份验证和权限。 我们不了解如何将创建的JDBC领域与我们的应用程序绑定以与数据库交互。 我们可以像这里一样以编程方式调用领域或直接查询数据库吗? 启动LoginContext的服务: 登录模块: CallBackHa

  • 使用这个例子,我的连接几乎可以工作 http://blogs.nologin.es/rickyepoderi/index.php?/archives/105-oracle-driver-and-kerberos.html 我使用的是Java7,但使用另一个没有问题。有没有一种方法可以用jvm正确读取票证(参见jdk中的kinit不要创建正确的票证)