Shiro安全框架数据库配置文件详解 (shiro 数据库配置文件)

Shiro是一个Java安全框架,它提供了认证、授权、加密等安全功能,广泛应用于企业级应用程序的开发中。Shiro的配置文件中包含了很多重要的参数和配置信息,其中数据库配置文件是非常关键的一部分。本文将详细介绍Shiro安全框架数据库配置文件的内容和作用。

一、数据库中的表结构

在Shiro框架中,用户信息和权限信息都存储在数据库中,我们需要在数据库中创建相关的表结构。Shiro默认的表结构如下:

1.用户表

CREATE TABLE `sys_user` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘用户id’,

`username` varchar(50) NOT NULL COMMENT ‘用户名’,

`password` varchar(100) NOT NULL COMMENT ‘密码’,

`salt` varchar(50) DEFAULT NULL COMMENT ‘盐值’,

`state` tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘状态(0:正常,1:锁定)’,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’用户表’;

2.角色表

CREATE TABLE `sys_role` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘角色id’,

`role_name` varchar(50) NOT NULL COMMENT ‘角色名称’,

`role_desc` varchar(100) DEFAULT NULL COMMENT ‘角色描述’,

`avlable` tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘状态(0:可用,1:不可用)’,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’角色表’;

3.权限表

CREATE TABLE `sys_permission` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘权限id’,

`permission_name` varchar(50) NOT NULL COMMENT ‘权限名称’,

`permission_url` varchar(200) DEFAULT NULL COMMENT ‘权限URL’,

`avlable` tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘状态(0:可用,1:不可用)’,

`parent_id` bigint(20) DEFAULT NULL COMMENT ‘父权限id’,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’权限表’;

4.用户角色关系表

CREATE TABLE `sys_user_role` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘用户角色关系id’,

`user_id` bigint(20) NOT NULL COMMENT ‘用户id’,

`role_id` bigint(20) NOT NULL COMMENT ‘角色id’,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’用户角色关系表’;

5.角色权限关系表

CREATE TABLE `sys_role_permission` (

`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘角色权限关系id’,

`role_id` bigint(20) NOT NULL COMMENT ‘角色id’,

`permission_id` bigint(20) NOT NULL COMMENT ‘权限id’,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’角色权限关系表’;

二、数据库配置文件

Shiro安全框架的数据库配置文件是Shiro的核心配置之一,它保存了Shiro框架中数据库连接的相关信息、表结构信息和查询语句等。本节将详细介绍Shiro安全框架数据库配置文件的每个配置项的作用和参数设置方法。

1.数据库连接信息配置

Shiro框架需要连接数据库才能读取用户信息和权限信息,因此,数据库连接信息是配置文件中最重要的一部分。下面是Shiro框架的数据库连接信息配置模板:

[mn]

# 数据库连接配置

jdbcDriver = com.mysql.jdbc.Driver

jdbcUrl = jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf8

jdbcUsername = root

jdbcPassword = root

其中,jdbcDriver是数据库驱动程序的名称,jdbcUrl是数据库连接字符串,jdbcUsername和jdbcPassword是数据库的登录用户名和密码。需要注意的是,如果使用非默认的数据库,则需要修改jdbcUrl配置项的内容。

2.表结构信息配置

Shiro框架需要读取数据库中的用户信息表、角色信息表和权限信息表,并且根据它们的关系建立用户角色关系表和角色权限关系表。下面是Shiro框架的数据库表结构信息配置模板:

[roles]

# 用户信息表名称

userTable = sys_user

# 用户名字段名称

usernameColumn = username

# 密码字段名称

passwordColumn = password

# 盐值字段名称

saltColumn = salt

[roles]

# 角色信息表名称

roleTable = sys_role

# 角色名字段名称

roleNameColumn = role_name

# 角色描述字段名称

roleDescColumn = role_desc

# 是否可用字段名称

roleAvlableColumn=avlable

[permissions]

# 权限信息表名称

permissionTable = sys_permission

# 权限名字段名称

permissionNameColumn = permission_name

# 权限url字段名称

permissionUrlColumn = permission_url

# 是否可用字段名称

permissionAvlableColumn = avlable

# 父权限id字段名称

permissionParentColumn = parent_id

[user_role]

# 用户角色关系表名称

userRoleTable = sys_user_role

# 用户id字段名称

userIdColumn = user_id

# 角色id字段名称

roleIdColumn = role_id

[role_permission]

# 角色权限关系表名称

rolePermissionTable = sys_role_permission

# 角色id字段名称

roleIdColumn = role_id

# 权限id字段名称

permissionIdColumn = permission_id

其中,[roles]、[permissions]、[user_role]和[role_permission]是配置文件的子标签,它们分别表示用户表信息、角色表信息、权限表信息、用户角色关系表信息和角色权限关系表信息。每个子标签中的参数名称和作用如下:

userTable:用户信息表名称

usernameColumn:用户名字段名称

passwordColumn:密码字段名称

saltColumn:盐值字段名称

roleTable:角色信息表名称

roleNameColumn:角色名字段名称

roleDescColumn:角色描述字段名称

roleAvlableColumn:是否可用字段名称

permissionTable:权限信息表名称

permissionNameColumn:权限名字段名称

permissionUrlColumn:权限url字段名称

permissionAvlableColumn:是否可用字段名称

permissionParentColumn:父权限id字段名称

userRoleTable:用户角色关系表名称

userIdColumn:用户id字段名称

roleIdColumn:角色id字段名称

rolePermissionTable:角色权限关系表名称

roleIdColumn:角色id字段名称

permissionIdColumn:权限id字段名称

3.查询语句配置

Shiro框架使用SQL语句查询数据库中的用户信息和权限信息,查询语句包括查询所有用户信息、查询用户角色信息、查询角色权限信息等。下面是Shiro框架的查询语句配置模板:

[roles]

# 查询单个用户信息

userSql = select password,salt from sys_user where username = ?

# 查询用户角色信息

rolesSql = select r.role_name from sys_user_role ur, sys_role r where ur.role_id = r.id and ur.user_id = (select id from sys_user where username = ?)

# 查询所有角色信息

allRolesSql = select role_name from sys_role

# 查询角色权限信息

permissionsSql = select p.permission_name from sys_role_permission rp,sys_permission p where rp.permission_id = p.id and rp.role_id = (select id from sys_role where role_name = ?)

其中,[roles]是配置文件的子标签,它表示角色信息相关查询语句。每个子标签中的参数名称和作用如下:

userSql:查询单个用户信息的SQL语句,其中?表示用户名参数

rolesSql:查询用户角色信息的SQL语句,其中?表示用户名参数

allRolesSql:查询所有角色信息的SQL语句

permissionsSql:查询角色权限信息的SQL语句,其中?表示角色名参数

三、数据库配置文件示例

下面是一个完整的Shiro安全框架数据库配置文件示例:

[mn]

# 数据库连接配置

jdbcDriver = com.mysql.jdbc.Driver

jdbcUrl = jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf8

jdbcUsername = root

jdbcPassword = root

[roles]

# 用户表信息

userTable = sys_user

usernameColumn = username

passwordColumn = password

saltColumn = salt

# 角色表信息

roleTable = sys_role

roleNameColumn = role_name

roleDescColumn = role_desc

roleAvlableColumn=avlable

# 权限表信息

permissionTable = sys_permission

permissionNameColumn = permission_name

permissionUrlColumn = permission_url

permissionAvlableColumn = avlable

permissionParentColumn = parent_id

# 用户角色关系表信息

userRoleTable = sys_user_role

userIdColumn = user_id

roleIdColumn = role_id

# 角色权限关系表信息

rolePermissionTable = sys_role_permission

roleIdColumn = role_id

permissionIdColumn = permission_id

# 查询单个用户信息

userSql = select password,salt from sys_user where username = ?

# 查询用户角色信息

rolesSql = select r.role_name from sys_user_role ur, sys_role r where ur.role_id = r.id and ur.user_id = (select id from sys_user where username = ?)

# 查询所有角色信息

allRolesSql = select role_name from sys_role

# 查询角色权限信息

permissionsSql = select p.permission_name from sys_role_permission rp,sys_permission p where rp.permission_id = p.id and rp.role_id = (select id from sys_role where role_name = ?)

上述配置文件中,包括了数据库连接信息、表信息和查询语句信息,开发人员只需要修改其中相应的参数即可使Shiro框架连接到自己的数据库。

Shiro安全框架的数据库配置文件是Shiro功能完整性的关键之一,它保存了Shiro框架中数据库连接的相关信息、表结构信息和查询语句等。开发人员可以根据自己的需求进行相应的修改和配置。


数据运维技术 » Shiro安全框架数据库配置文件详解 (shiro 数据库配置文件)