我是靠谱客的博主 活力枫叶,最近开发中收集的这篇文章主要介绍spring security之自定义数据库表结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    上一讲中我们说了,我们可以采用spring security默认使用的数据库表结构,就是users和authiration表,但是在实际开发中,用户表通常都是各式各样的,需要根据自己的业务场景来设计,这就要用到了自定义数据库表结构来配合spring security的使用了。

  首先我们来建立三个表。

 

CREATE TABLE role(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(50),
descn VARCHAR(200)
);
CREATE TABLE `user`(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
PASSWORD VARCHAR(50),
STATUS INTEGER,
descn VARCHAR(200)
);
CREATE TABLE user_role(
user_id BIGINT AUTO_INCREMENT PRIMARY KEY,
role_id BIGINT
);
ALTER TABLE user_role ADD CONSTRAINT fk_user_role_user FOREIGN KEY(user_id) REFERENCES USER(id);
ALTER TABLE user_role ADD CONSTRAINT fk_user_role_role FOREIGN KEY(role_id) REFERENCES role(id);

并初始化数据

INSERT INTO USER(id,username,PASSWORD,STATUS,descn) VALUES(1,'admin','admin',1,'管理员');
INSERT INTO USER(id,username,PASSWORD,STATUS,descn) VALUES(2,'user','user',1,'用户');


INSERT INTO role(id,NAME,descn) VALUES(1,'ROLE_ADMIN','管理员角色');
INSERT INTO role(id,NAME,descn) VALUES(2,'ROLE_USER','用户角色');


INSERT INTO user_role(user_id,role_id) VALUES(1,1);
INSERT INTO user_role(user_id,role_id) VALUES(1,2);

INSERT INTO user_role(user_id,role_id) VALUES(2,2);

然后再程序中再加上这个配置就可以了

<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="datasource"
users-by-username-query="select username,password,status as enabled
from user
where username=?"
authorities-by-username-query="select u.username,r.name as authority
from user u
join user_role ur
on u.id=ur.user_id
join role r
on r.id=ur.role_id
where u.username=?"/>
</authentication-provider>
</authentication-manager>
其实就是变相的查出Users和authorities而已,很简单.

最后

以上就是活力枫叶为你收集整理的spring security之自定义数据库表结构的全部内容,希望文章能够帮你解决spring security之自定义数据库表结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部