SpingBoot+Spring Security+Mybatis整合登录功能

最近考虑项目权限控制问题,正好来学习下Spring Security,写个demo。
Spring Security通过Filter Chain过滤器链来实现访问权限的控制,简单需求下设置起来还是挺方便的。

数据库结构

数据库存放用户信息,权限和权限表,总共三张。
Role_user
在这里插入图片描述

Role_type
在这里插入图片描述

Role_user_role
在这里插入图片描述

利用Role_user_role中间表实现用户和权限类型间的多对多关系。

项目配置和结构

项目Maven设置了SpringBoot 2.2.6版本的依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/>
    </parent>

Spring Security引入

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
</dependency>

  其它诸如mybatis,thymeleaf等依次引入即可,用spring initializr的话会很方便。不过用spring initializr创建项目,项目的配置文件application默认为properties文件,高版本的SpringBoot中可能要额外进行配置文件的读取处理,建议改成yml文件。

项目结构如图
在这里插入图片描述

  其中bean中为实体类,dao中为mapper接口,security中为Spring Security设置类。

实体类

  实体类其实就两个,user和role,user中包含list类型的role列表,按照数据表写就完了,这里不贴出来。
  重点来看下RUser,该类实现了Spring Security提供的UserDetails接口。该接口实现类用来存放Spring Security维护的用户信息,框架本身也提供了一个User类,不过信息比较少,要满足需求需要自己定义实现类。

/*
    该类实现userdetails.User类,方便spring security进行用户记录
 */
public class RUser implements UserDetails, Serializable {
   

    private static final long serialVersionUID = 935664911799490702L;
    User user;

    public RUser(User user){
   
        this.user = user;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
   
        List<Role> roles = user.getRoles();
        if(!roles.isEmpty())
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值