EJB---->自定义安全域
把用户名/密码及角色存放在users.propertes 和roles.properties 文件,不便于日后的管理。大多数情况下我们都希
望把用户名/密码及角色存放在数据库中。为此,我们需要自定义安全域,下面的例子定义了一个名为foshanshop
的安全域,他采用数据库存储用户名及角色。
望把用户名/密码及角色存放在数据库中。为此,我们需要自定义安全域,下面的例子定义了一个名为foshanshop
的安全域,他采用数据库存储用户名及角色。
安全域在[jboss 安装目录]/server/default/conf/login-config.xml 文件中定义,本例配置片断如下:
数据源的配置), principalsQuery 属性定义Jboss 通过给定的用户名如何获得密码, rolesQuery 属性定义Jboss通过给定的用户名如何获得角色列表,注意:SQL 中的'Roles'常量字段不能去掉。unauthenticatedIdentity 属性允许匿名用户(不提供用户名及密码)访问。
“foshanshop”安全域使用的sys_user 和sys_userrole 表是自定义表,实际项目开发中你可以使用别的表名。
sys_user 表必须含有用户名及密码两个字段,字段类型为字符型,至于字符长度视你的应用而定。
sys_userrole 表必须含有用户名及角色两个字段,字段类型为字符型,字符长度也视你的应用而定。
下面是sys_user,sys_userrole 表的具体定义(实际项目开发中字段名可以自定义)

<!-- ....................... foshanshop login configuration ....................--> <application-policy name="foshanshop"> <authentication> <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required"> <module-option name="dsJndiName">java:/DefaultMySqlDS</module-option> <module-option name="principalsQuery"> select password from sys_user where name=? </module-option> <module-option name="rolesQuery"> select rolename,'Roles' from sys_userrole where username=? </module-option> <module-option name = "unauthenticatedIdentity">AnonymousUser</module-option> </login-module> </authentication>上面使用了Jboss 数据库登录模块(org.jboss.security.auth.spi.DatabaseServerLoginModule),他的dsJndiName 属性(数据源JNDI 名)使用DefaultMySqlDS 数据源(本教程自定义的数据源,关于数据源的配置请参考后面章节:JBoss
数据源的配置), principalsQuery 属性定义Jboss 通过给定的用户名如何获得密码, rolesQuery 属性定义Jboss通过给定的用户名如何获得角色列表,注意:SQL 中的'Roles'常量字段不能去掉。unauthenticatedIdentity 属性允许匿名用户(不提供用户名及密码)访问。
“foshanshop”安全域使用的sys_user 和sys_userrole 表是自定义表,实际项目开发中你可以使用别的表名。
sys_user 表必须含有用户名及密码两个字段,字段类型为字符型,至于字符长度视你的应用而定。
sys_userrole 表必须含有用户名及角色两个字段,字段类型为字符型,字符长度也视你的应用而定。
下面是sys_user,sys_userrole 表的具体定义(实际项目开发中字段名可以自定义)


在完成上面的配置后,我们就可以使用“foshanshop”安全域了,配置内容如下:
jboss.xml
<?xml version="1.0" encoding="UTF-8"?> <jboss> <!-- Bug in EJB3 of JBoss 4.0.4 GA <security-domain>java:/jaas/foshanshop</security-domain> --> <security-domain>foshanshop</security-domain> <unauthenticated-principal>AnonymousUser</unauthenticated-principal> </jboss>
jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"> <jboss-web> <security-domain>java:/jaas/foshanshop</security-domain> </jboss-web>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律