如何配置 JDBCRealm 从 JNDI 获取其数据源

2024-03-27

你如何使用JDBCRealm在 servlet 中处理用户身份验证和授权?我能找到的唯一示例是在中创建数据源web.xml(例如使用 shiro 1.2.1 对数据库进行身份验证 https://stackoverflow.com/questions/12894227/authentication-against-database-using-shiro-1-2-1).

我不想在我的源树中包含数据库凭据(出于明显的原因),并且更愿意通过 JNDI 使用上下文定义的数据源,就像我在我开发的每个其他 servlet 项目中用于任何其他目的的每个其他 RDBMS 一样。

如何配置 ShiroJDBCRealm以获得其DataSource来自 JNDI?


Vrushank 的答案非常接近:您不需要在这里子类化 JdbcRealm - 您可以使用 Shiro 的Jndi对象工厂 http://shiro.apache.org/static/current/apidocs/org/apache/shiro/jndi/JndiObjectFactory.html获取 DataSource,然后在配置 JdbcRealm 时引用该 DataSource:

[main]
dataSource = org.apache.shiro.jndi.JndiObjectFactory
dataSource.resourceName = java://app/jdbc/myDataSource

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource = $dataSource
#addt'l config

对于 Web 应用程序,将文件保存在WEB-INF/shiro.ini.

See Also

  • https://github.com/danielmt/shiro-primefaces-example/blob/master/src/main/webapp/WEB-INF/shiro.ini https://github.com/danielmt/shiro-primefaces-example/blob/master/src/main/webapp/WEB-INF/shiro.ini
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何配置 JDBCRealm 从 JNDI 获取其数据源 的相关文章

随机推荐