23.认证服务-登录功能

本文详细介绍了普通登录的实现过程,包括从接收登录请求到验证用户信息的步骤。同时,探讨了OAuth2.0协议在社交登录(如QQ、微信)中的应用,解释了资源拥有者、授权服务器和资源服务器的角色及其交互流程。
摘要由CSDN通过智能技术生成

普通登录

Member和auth服务里各放一份vo

@Data
public class UserLoginVo {
    private String loginacct;
    private String password;
}

    @Override
    public MemberEntity login(MemberLoginVo memberLoginVo) {
        String loginacct = memberLoginVo.getLoginacct();
        String password = memberLoginVo.getPassword();
        //去数据库查询 loginacct有可能是用户名也有可能是手机号
        MemberEntity memberEntity = baseMapper.selectOne(new QueryWrapper<MemberEntity>().eq("mobile", loginacct)
                .or().eq("username", loginacct));
        //如果实体类不存在就登录失败
        if(memberEntity==null){
            return null;
        }else{
            String passwordDB = memberEntity.getPassword();
            //密码匹配
            BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
            boolean matches = bCryptPasswordEncoder.matches(password, passwordDB);
            if(matches){
                return memberEntity;
            }
            return null;
        }
    }

@PostMapping("/login")
    public R login(@RequestBody MemberLoginVo memberLoginVo){
        MemberEntity memberEntity=memberService.login(memberLoginVo);
        if(memberEntity!=null){
            return R.ok();
        }else{
            return R.error(BizCodeEnum.LOGIN_INVALID_EXCEPTION.getCode(),BizCodeEnum.LOGIN_INVALID_EXCEPTION.getMsg());
        }
    }

远程调用接口

   @PostMapping("/login")
    public String login(UserLoginVo vo,RedirectAttributes redirectAttributes){//页面提交过来的数据是key-value,不能用requestBody接受
        R login = memberFeignService.login(vo);
        Map<String,String> errors=new HashMap<>();
        if(login.getCode()==0){
            return "redirect:http://gulimall.com";
        }else{
            //登录失败
            errors.put("msg",login.getData("msg",new TypeReference<String>(){}));
            redirectAttributes.addFlashAttribute("errors",errors);
            return "redirect:http://auth.gulimall.com/login.html";
        }
    }

社交登录--QQ,微信登录

OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。

微信:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html

客户端是

资源拥有者:用户本人

授权服务器:QQ服务器,微信服务器等。返回访问令牌

资源服务器:拿着令牌访问资源服务器看令牌合法性


Gitee登录

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值