java – GlassFish JDBC领域组成员
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – GlassFish JDBC领域组成员,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2454字,纯文字阅读大概需要4分钟。
内容图文
![java – GlassFish JDBC领域组成员](/upload/InfoBanner/zyjiaocheng/708/1a303fee74104eec85b251432b26adab.jpg)
我一直忙于在GlassFish 3.1上设置身份验证,特别是JDBC领域.我一直在假设:
>“用户”表包含登录名(“email_address”)和密码(“密码”)
>“组”表包含组名列表(“名称”)
>“User_Group”表匹配用户和组.
我无处可配置“User_Group”表,但是我想知道服务器如何能够将用户与组匹配.不用说它没用.然而,仔细检查表明:
>“用户”表包含登录名(“email_address”)和密码(“密码”)
>“组”表包含登录名(“email_address”)作为主键,以及以逗号分隔的组名列表(“Administrator,User”)在一列中(“组”)
这是正确的,如果是这样,为什么要经历创建单独的“组”表的麻烦?由于看起来每次登录只能有一个组列表(“email_address”),只是简单地将一个名为“groups”的列添加到“User”表并完全丢弃“Group”表就不那么容易了吗?
谢谢!
解决方法:
我不确定您配置JDBC领域的材料是什么,但它看起来不完整或不正确.以下是我用于配置JDBC领域的配置的描述.
数据库结构(作为DDL语句):
USERS表
CREATE TABLE USERS (
USERID VARCHAR(50) NOT NULL,
PASSWORD VARCHAR(128) NOT NULL
);
--//@UNDO
DROP TABLE USERS;
GROUPS表
CREATE TABLE GROUPS (
GROUPID VARCHAR(20) NOT NULL
);
--//@UNDO
DROP TABLE GROUPS;
USERS_GROUPS联接表
CREATE TABLE USERS_GROUPS (
GROUPID VARCHAR(20) NOT NULL,
USERID VARCHAR(50) NOT NULL
);
--//@UNDO
DROP TABLE USERS_GROUPS;
来自domain.xml的Glassfish JDBCRealm配置代码段:
<auth-realm name="MyRealm" classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm">
<property description="null" name="jaas-context" value="jdbcRealm"></property>
<property name="encoding" value="Hex"></property>
<property description="null" name="password-column" value="PASSWORD"></property>
<property name="datasource-jndi" value="jdbc/myDS"></property>
<property name="group-table" value="USERS_GROUPS"></property>
<property name="user-table" value="USERS"></property>
<property description="null" name="group-name-column" value="GROUPID"></property>
<property name="digest-algorithm" value="SHA-512"></property>
<property description="null" name="user-name-column" value="USERID"></property>
</auth-realm>
注意,group-name-column属性的值为GROUPID,它映射到连接表USERS_GROUPS的GROUPID列,而不是组表GROUPS.这是因为JDBCRealm发出以下SQL语句(如果您反编译com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm类):
密码查询,用户Id是从DigestLoginModule传递的参数:
SELECT <passwordColumn> FROM <userTable> WHERE <userNameColumn> = ?
组查询,用户ID作为参数传递:
SELECT <groupNameColumn> FROM <groupTable> WHERE <groupTableUserNameColumn> = ?;
当您考虑第二个查询的结构时,很明显组表必须包含映射到组ID的用户ID(这会导致映射到多个组的用户的组数据重复),或组表必须是将用户映射到组的连接表.
内容总结
以上是互联网集市为您收集整理的java – GlassFish JDBC领域组成员全部内容,希望文章能够帮你解决java – GlassFish JDBC领域组成员所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。