微服务授权 springsecurity+auth2基本入门

微服务登录问题:
解决方式:
我们使用客户端Token+oauth2+jwt+springsecurity
oauth2:简易,开放,安全,不接触账号密码
oauth2四种模式:

  • 授权码模式
  • 简化模式:没有授权码,直接token,安全性降低
  • 密码模式:一般在自己系统中用(不接触三方)
  • 客户端模式:不要用户名密码,直接返回token,在自己的服务器中使用,比如认证服务访问资源模式,你来访问我就直接返回token
  • 实现
  • 建立几个微服务
  • 1导包
  • 2搭建eureka,配置yml 注册eureka
  • 3搭建zuul 配置zuul
  • 4搭建resource 注册到eureka,开启zuul
  • 5搭建auth,注册到eureka,开启zuul
  • 6集成auth2
  • 导包
  • 7auth集成mybatis
  • 导入数据库到hrm-auth
  • 自定义UserDetailService
  • 根据name查询用户 基本判断用户
  • 查询所拥有的权限
  • 把用户和权限封装成一个UserDetailService
  • 把用户转成user 传参 用户名 密码 权限
  • 权限装成他所需要的集合
  • 返回一个UserDetailService

@Component
public class MyUserDetailService implements UserDetailsService {
   
    @Autowired
    private MyUserMapper myUserMapper;
    @Autowired
    private PermissionMapper permissionMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
   
        //通过username查询
        MyUser myUser = myUserMapper.loadByUsername(username);
        if(myUser==null){
   
            System.out.println(username + "用户不存在");
        }
        //通过用户查询所拥有的权限
        List<Permission> permissions = permissionMapper.loadByMyUserId(myUser.getId());
        List<SimpleGrantedAuthority> authorities=new ArrayList<>();
        permissions.forEach(permission -> {
   
            authorities.add(new SimpleGrantedAuthority(permission.getExpression()));
        });
        //转成需要的数组
        //参数需要 String username, String password, Collection<? extends GrantedAuthority> authorities
        User user=new User(myUser.getUsername(),myUser.getPassword(),authorities);
        return user;
    }
}

  • 配置springsecurity
  • 1继承websecurityConfigureAdapter
  • 2配置
  • 3开启springsecurity
  • 4密码匹配器
  • 5重写configure方法
/**
 * 对security安全配置
 */
@Configuration//相当于在xml 里面配置了bean
@EnableWebSecurity(debug = false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜甜掉在星星上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值