Shiro JdbcRealm 授权的表模式?

Posted

技术标签:

【中文标题】Shiro JdbcRealm 授权的表模式?【英文标题】:Table schema for Shiro JdbcRealm Authorization? 【发布时间】:2014-12-01 02:57:01 【问题描述】:

我希望我的应用使用Apache Shiro 进行身份验证和授权。我想从简单的开始,让关系数据库成为这两者的数据源。这意味着我需要使用JdbcRealm。

阅读文档后,我不清楚任何“用户表”需要什么表架构,包括将用户链接到他们的权限/角色的任何表。

所以我问:使用 Shiro 的 JdbcRealm,我如何/在哪里将用户链接到他们各自的权限/角色?

它不能在shiro.ini 文件中,因为这是一个静态配置文件,无法连接到存储用户信息的 JDBC 数据源。

【问题讨论】:

【参考方案1】:

JdbcRealm 不依赖于特定的表架构:它使用一些您可以覆盖的默认查询(通过子类化或通过特定的 setter 方法)以使其适应您的需求。

如javadoc 中所述,您可以使用默认查询作为构建您自己的架构的基础。查看source,您可能会开始创建三个基本表:usersuser_rolesroles_permissions

protected static final String DEFAULT_AUTHENTICATION_QUERY = "select password from users where username = ?";

/**
* The default query used to retrieve account data for the user when @link #saltStyle is COLUMN.
*/
protected static final String DEFAULT_SALTED_AUTHENTICATION_QUERY = "select password, password_salt from users where username = ?";

/**
* The default query used to retrieve the roles that apply to a user.
*/
protected static final String DEFAULT_USER_ROLES_QUERY = "select role_name from user_roles where username = ?";

/**
* The default query used to retrieve permissions that apply to a particular role.
*/
protected static final String DEFAULT_PERMISSIONS_QUERY = "select permission from roles_permissions where role_name = ?";

【讨论】:

感谢@Cristian Greco - 成功了!

以上是关于Shiro JdbcRealm 授权的表模式?的主要内容,如果未能解决你的问题,请参考以下文章

shiro框架学习-4- Shiro内置JdbcRealm

shiro学习笔记_0600_自定义realm实现授权

shiro自定义realm

使用 JDBCRealm 通过 Shiro 对用户进行身份验证

shiro,使用第三方jdbcRealm连接数据库操作

如何在 Shiro 中使用 JdbcRealm 对提交的密码进行哈希处理?