概述
上一讲中我们说了,我们可以采用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之自定义数据库表结构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复