`
qq543123909
  • 浏览: 26003 次
社区版块
存档分类
最新评论

Spring Security 学习(6)

阅读更多

这篇主要的内容是:

自定义用户表和权限表

也是解决第三篇留下的问题,这个解决方案是在这个大哥的博客看到的http://downpour.iteye.com/blog/319965

下面就是我自己做的例子:

 

准备工作:

1.在数据库中 自定义我们的用户表 和 权限表.

-- 用户表 
create table tb_users(
      id number primary key not null,
      c_username nvarchar2(50) not null,
      c_password nvarchar2(50) not null,
      c_enabled char(1) not null
);

--权限表
create table tb_role(
       id number primary key not null,
       c_authority nvarchar2(50) not null
);

--用户权限中间表
create table tb_user_role(
      id number primary key not null,
      c_user_id number not null,
      c_role_id number not null
);

--添加相应的外键引用 和 索引
alter table tb_user_role 
add constraint fk_user_id foreign key (c_user_id) references tb_users(id);

alter table tb_user_role 
add constraint fk_role_id foreign key(c_role_id) references tb_role(id);  

alter table tb_users
add constraint uq_username unique(c_username);

create unique index ix_user_role on tb_user_role (c_user_id,c_role_id);


--插入测试数据.
insert into tb_users values(1,'user','ee11cbb19052e40b07aac0ca060c23ee','1');
insert into tb_users values(2,'admin','21232f297a57a5a743894a0e4a801fc3','1');
insert into tb_users values(3,'zyk','a90157d9f9a8d683152ca521cf1ecfac','1');

select * from users

insert into tb_role values(1,'ROLE_ADMIN');
insert into tb_role values(2,'ROLE_USER');

select * from tb_role

insert into tb_user_role values(1,1,2);
insert into tb_user_role values(2,2,1);
insert into tb_user_role values(3,3,1);
insert into tb_user_role values(4,3,2);

select * from tb_user_role



 

上面的用户名 和 密码 都是一样的 例如用户名  user  对应的 密码是 user  经过MD5 处理出来后的字串

是ee11cbb19052e40b07aac0ca060c23ee 保存在数据库 出于安全性的考虑.

 

2.配置applicationCotext.xml

	<!--配置认证管理器 -->
	<security:authentication-manager>
		<security:authentication-provider>
			<security:password-encoder hash="md5" />
			<security:jdbc-user-service
				data-source-ref="dataSource" 
				 users-by-username-query="select u.c_username username,u.c_password password,u.c_enabled enabled 
				 from tb_users u where u.c_username=? "
				authorities-by-username-query="select u.c_username username,r.c_authority authority 
				from tb_users u , tb_role r ,tb_user_role ur 
				where u.id=ur.c_user_id  and r.id=ur.c_role_id and u.c_username=?" />
			<!-- <security:user-service> -->
			<!-- <security:user name="user" password="user" -->
			<!-- authorities="ROLE_USER" /> -->
			<!-- </security:user-service> -->
		</security:authentication-provider>
	</security:authentication-manager>

 

 

到此 使用 用户名 zyk 密码 zyk 进行登录成功 .测试Ok. 

 

 

通过添加users-by-username-query 和authorities-by-username-query 属性,我们可

以使用你自己的SQL 覆盖默认的SQL 语句。这样我们就可以指定查询的是我们自己定义的表了

但是 我们必须确保我们的SQL 语句返回的列与Spring Security 所期待的一样  

 

很显然的是 用户表 需要的 字段是 username , password,enabled .

权限表 则是 username ,authority

共同的是 他们都需要 username 作为where子句的限制条件. 

 

 

 

 

 

 

 

 

 

 

1
1
分享到:
评论

相关推荐

    2025最新全国水利安全生产知识竞赛题库(含答案).docx

    2025最新全国水利安全生产知识竞赛题库(含答案).docx

    【雷达】非相干多视处理(CSA)Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    使用 MATLAB 的实时人脸识别考勤系统Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    elasticsearch8.17.1 docker镜像资源

    因为文件过大所以使用bz2进行了2次压缩,请解压成tar包后在上传到服务器

    基于java+ssm+mysql的校园二手交易平台 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    iostat打印解析画图工具

    iostat打印解析画图工具

    fence-agents-compute-4.2.1-41.el7-9.6.x64-86.rpm.tar.gz

    1、文件内容:fence-agents-compute-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-compute-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    从倾斜边缘或倾斜狭缝计算 MTFMatlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    维控HMI和PLC在各行业的应用

    PDF格式,229页,包括有环保,新能源,木工,包装等行业的应用。适用于电气自动化行业。

    dropwatch-1.4-9.el7.x64-86.rpm.tar.gz

    1、文件内容:dropwatch-1.4-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dropwatch-1.4-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    fence-agents-emerson-4.2.1-41.el7-9.6.x64-86.rpm.tar.gz

    1、文件内容:fence-agents-emerson-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-emerson-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    航空发动机磨粒荷电特性研究.pdf

    航空发动机磨粒荷电特性研究.pdf

    第十一届蓝桥杯大赛个人赛校内选拔(软件类)真题

    第十一届蓝桥杯大赛个人赛校内选拔(软件类)真题全面考察了参赛选手的编程与算法能力,涵盖多个热门编程语言,为选手提供了展现自身实力的舞台。 考察范围与方向 真题在编程语言上聚焦于 C/C++、Java、Python 等主流语言。考察内容广泛,既有基础的语法运用,也涉及复杂的数据结构和算法。数据结构方面,对数组、链表、栈、队列、哈希表等的使用有不同程度的考察;算法上,动态规划、贪心算法、搜索算法等经典算法是考察重点。 题型示例与特点 在具体题型上,有数值计算类题目,例如给定条件计算特定数值,要求选手有较强的逻辑思维和数学运算能力;字符串处理类题目,如字符串匹配、替换等,考验选手对字符串操作函数的熟悉程度;还有图论与搜索类题目,像最短路径问题,需要选手掌握相应的搜索算法。 考察目的与意义 这次校内选拔真题旨在筛选出编程能力强、算法思维敏捷的选手,为后续的正式比赛储备人才。通过解答这些真题,选手能发现自身知识短板,明确学习方向。对于学校而言,能了解学生的编程水平,为教学改进提供参考。同时,这也为学生提供了与同龄人交流切磋的机会,激发他们学习编程的热情,提升解决实际问题的能力。

    一种采用耦合电感的开关电路分析.pdf

    一种采用耦合电感的开关电路分析.pdf

    rancher-active-proxy

    rancher-active-proxy

    RSSIIndoorLocation-master

    RSSIIndoorLocation-master

    【电力系统】基于主从博弈的售电商多元零售套餐设计与多级市场购电策略Matlab复现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    exchange-bmc-os-info-1.8.18-11.el7-9.x64-86.rpm.tar.gz

    1、文件内容:exchange-bmc-os-info-1.8.18-11.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/exchange-bmc-os-info-1.8.18-11.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    基于java+ssm+mysql的图书管理借阅系统 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

    docbook-style-xsl-1.78.1-3.el7.x64-86.rpm.tar.gz

    1、文件内容:docbook-style-xsl-1.78.1-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/docbook-style-xsl-1.78.1-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

Global site tag (gtag.js) - Google Analytics