springboot 实现权限管理(一)

一、背景

1、 为什么进行权限管理?
生活在形形色色的世界之中,我们各自扮演着各自的角色,拥有不同的权利和义务。映射在计算机系统之中,也一样需要 角色、权限 来进行对用户的分类,限制访问资源,保证资源地合理被使用,使人各司其职。
2、应用场景
假设 管理员可以对用户进行CRUD的管理,而普通用户往往只拥有对资源的查看,无法进行删除等高级权限。
3、SpringBoot实现主要的方式
(1)采用注解+拦截器
(2)Shiro框架
(3)Spring Security
4、重点理解
(1)理解用户、角色、权限的概念
(2)分类资源(对应相应的权限),一般可以有数据权限、操作权限、访问权限等,表现为对URL(URI)的访问控制;URL即标识了访问数据,图片等。
(3)将用户,角色,权限 在库表设计时的五张表理解。在关系数据库中,由于原子性(第一规范),因此需要两张关联表进行管理用户和角色,角色和权限。

二、实现

  1. 实现逻辑:采用自底向上的思维

  2. 设计库表
    在这里插入图片描述

create table crm.cus_user
(
    id          int auto_increment
        primary key,
    username    varchar(50)  not null,
    password    varchar(255) not null,
    name        varchar(31)  null,
    sex         varchar(2)   null,
    phone       varchar(11)  null,
    address     varchar(255) null,
    dept_id     varchar(100) null,
    create_time timestamp    null
)
    comment '用户表';

create table crm.cus_role
(
    id             int auto_increment
        primary key,
    name           varchar(255) null,
    create_time    timestamp    null,
    create_user_id int          null,
    update_time    timestamp    null,
    update_user_id timestamp    null
)
    comment '用户角色表';
    
create table crm.cus_permission
(
    id    int auto_increment
        primary key,
    name  varchar(255) null,
    pid   int          null,
    level int          null,
    mark  varchar(255) null
)
    comment '用户权限表';
create table crm.role_permission
(
    id         int auto_increment
        primary key,
    role_id    int null,
    permission int null
)
    comment '角色权限关联表';

create table crm.user_role
(
    id      int auto_increment
        primary key,
    user_id int null,
    role_id int null
)
    comment '用户权限关联表';




  1. 处理逻辑分析

(1)用户访问非登录URL,则查看token(存储在header);若token失效则返回失效,token未失效进行权限查看(token及权限信息等常用个人信息采用Redis进行缓存),有权限放行,无权限拦截;
(2)用户访问登录URL,则无需拦截,判断用户、密码,进行缓存个人信息(查询关系数据库的用户角色、权限信息后进行缓存),并返回token给用户作为下次登录凭证;

  1. 具体代码

(1)工程结构:
在这里插入图片描述
按照 MVC的工程结构:分为 controller,service,dao;
controller:暴露访问资源的URL,使用注解进行注解需要权限的class或method;
service:实现登录逻辑,登录验证,保存token。
dao:访问数据库(采用JPA)
interceptor:进行拦截处理
(2)Postman进行测试
(3)关于Token的生成
在此简单采用的Md5简单加密,好处是简单,坏处是token不具动态性;采用采用策略模式进行设计不同的加密方式(JWT,等)

代码:见Gitee
三、项目地址 gitee

  • 14
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Spring Boot是一个基于Spring框架开发的轻量级的Java框架,可以用于快速搭建基于RESTful风格的Web应用程序。在Spring Boot中实现用户权限管理可以通过以下几个步骤来完成。 首先,我们可以使用Spring Security模块来实现用户权限管理。Spring Security是一个功能强大的授权和认证框架,可以用于保护应用程序的安全性。在Spring Boot中,我们只需要添加相应的依赖并进行一些配置,就可以快速实现用户权限管理。 其次,我们可以定义角色和权限。角色是用户的身份或者权限的集合,而权限是指用户可以执行的操作。可以通过数据库表或者配置文件来定义角色和权限,然后在Spring Security中进行相应的配置,使得不同的用户可以具备不同的角色和权限。 接着,我们可以通过注解来限制用户的访问权限。在Spring Boot中,可以使用@PreAuthorize注解或者@Secured注解来进行访问权限的控制。通过在控制器方法上添加相应的注解,可以限制只有具备特定角色或权限的用户才能访问该方法。 最后,我们可以通过登录功能来实现用户认证。可以通过Spring Security提供的登录页面或者自定义的登录页面,让用户输入用户名和密码进行验证。验证通过后,系统会为用户生成一个令牌,并将该令牌存储在Session或者Cookie中。用户在之后的请求中携带该令牌进行访问,系统会根据令牌验证用户的身份和权限。 综上所述,通过Spring Boot可以方便快捷地实现用户权限管理。通过使用Spring Security模块、定义角色和权限、限制访问权限以及用户认证等步骤,可以保护应用程序的安全性并限制用户的访问权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值