别再让你的微服务裸奔了,基于 Spring Session & Spring Security 微服务权限控制

本文介绍了在微服务架构中,如何利用Spring Session和Spring Security进行用户认证和权限控制。详细讨论了用户-角色-权限表结构设计,用户服务设计,以及在其他服务中的应用配置。在用户登录后,信息被缓存到Redis,通过自定义缓存对象和权限注解实现动态权限管理。
摘要由CSDN通过智能技术生成

微服务架构

  • 网关:路由用户请求到指定服务,转发前端 Cookie 中包含的 Session 信息;
  • 用户服务:用户登录认证(Authentication),用户授权(Authority),用户管理(Redis Session Management)
  • 其他服务:依赖 Redis 中用户信息进行接口请求验证

用户 - 角色 - 权限表结构设计

  • 权限表
    权限表最小粒度的控制单个功能,例如用户管理、资源管理,表结构示例:
id
authority
description
1
ROLEADMINUSER
管理所有用户
2
ROLEADMINRESOURCE 管理所有资源
3
ROLEA1
访问 ServiceA 的某接口的权限
4
ROLEA2
访问 ServiceA 的另一个接口的权限
5
ROLEB1
访问 ServiceB 的某接口的权限
6
ROLEB2
访问 ServiceB 的另一个接口的权限

  • 角色 - 权限表
    自定义角色,组合各种权限,例如超级管理员拥有所有权限,表结构示例:
id
name
authority_ids
1
超级管理员 1,2,3,4,5,6
2
管理员A
3,4
3
管理员B
5,6
4
普通用户
NULL

  • 用户 - 角色表
    用户绑定一个或多个角色,即分配各种权限,示例表结构:
user_id role_id
1
1
1
4
2
2

用户服务设计

Maven 依赖(所有服务)

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

        <!-- Spring Session Redis -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

应用配置 application.yml 示例:

# Spring Session 配置
spring.session.store-type=redis
server.servlet.session.persistent=true
server.servlet.session.timeout=7d
server.servlet.session.cookie.max-age=7d

# Redis 配置
spring.redis.host=<redis-host>
spring.redis.port=6379

# MySQL 配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://<mysql-host>:3306/test
spring.datasource.username=<username>
spring.datasource.password=<passowrd>

用户登录认证(authentication)与授权(authority)

Sl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值