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而已,很简单.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值