Gateway+Security+JWT统一鉴权

前言

之前做的客户信息管理系统太简陋了,就先写了一个交差(小公司的好处:想怎么写就怎么写),现在有时间了也看了一些分布式的教学视频,就想着用spring cloud重构一遍,完善下,也能看看是不是把cloud了解了


1.为什么选择使用Security

看了网上一些对比Security和Shiro的文章,大概理解就是Security相对重量级,功能更多,项目如果是基于Spring开发的,兼容会更好,毕竟属于半练习嘛,老板也没有时间要求,个人觉得用明白Security其他的大概也能了解了


2.踩坑!

决定用Security做鉴权了就在网上看文字的教程和视频教程,了解了Security运行的流程后决定将它放在gateway里所有的请求都过一遍验证,然后按照各个教程中的思路写完发现:编译正常、运行无错误,但是不起作用。

鼓捣好久才知道由于 SpringCloud Gateway 基于WebFlux 并且不兼容SpringMVC,因此对于Security的配置方式也跟普通SpringBoot项目中的配置方式不同。

在Gateway项目中使用的WebFlux,是不能和Spring-Web混合使用的!!!配置方式要换成 WebFlux的方式

当时只看了spring boot中使用Security的教程觉得理解思路就行了,还是太大意了

“自定义认证”、“自定义鉴权”、“登陆成功、失败“等注入的组件,全部要换为WebFlux版本对应的


3.实现思路

3.1.登录校验流程

 3.2具体实现

首先实现ReactiveUserDetailsService接口,重写findByUsername方法,改成自己的去数据库读用户名密码

@Service
public class UserService implements ReactiveUserDetailsService {

    @Autowired
    YuangongMapper yuangongMapper;

    @Override
    public Mono<UserDetails> findByUsername(String username) {
        return Mono.just(queryDbUser(username));
    }

    p
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值