项目级用户注册流程及代码完成

原创
小哥 3年前 (2022-11-08) 阅读数 78 #大杂烩

主体逻辑:用户单击登录进入身份验证服务的界面。身份验证服务的接口远程调用成员服务登录的接口。如果会员服务验证帐户密码通过,用户将进入主页。如果失败,用户将返回登录页面并显示错误消息。

注意:如果您不理解或想查看完整的注册、验证、登录、第三方登录和其他流程和代码,请查看此栏。

1,写入身份验证服务调用成员服务service.

package com.atguigu.***.auth.feign;

import com.atguigu.common.utils.R;
import com.atguigu.***.auth.vo.UserLoginVo;
import com.atguigu.***.auth.vo.UserRegistVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @author guanghaocheng
 * @version 1.0
 * 翅膀被灰尘和雾气稍稍补充。,蜡烛末端的光线增加了太阳和月亮的辉光。
 * @date 2021/7/8 19:53
 */
@FeignClient("***-member")
public interface MemberFeignService {

    @PostMapping("/member/member/regist")
    public R regist(@RequestBody UserRegistVo vo);

    @PostMapping("member/member/login")
    public R login(@RequestBody UserLoginVo vo);
}

2,身份验证服务登录界面。

@PostMapping("/login")
    public String login(UserLoginVo vo,RedirectAttributes redirectAttributes){
        //远程登录
        R r = memberFeignService.login(vo);
        if(r.getCode() == 0){
            //登录成功
            return "redirect:http://***.com";
        }else{
            Map errors = new HashMap<>();
            errors.put("msg",r.getData("msg",new TypeReference(){}));
            redirectAttributes.addFlashAttribute("errors",errors);
            return "redirect:http://auth.***.com/login.html";
        }
    }

3,成员模块登录界面。

@PostMapping("/login")
    public R login(@RequestBody MemberLoginVo vo){
        MemberEntity entity = memberService.login(vo);
        if(entity != null){
            //TODO 1,成功登录以获取数据和处理
            return R.ok();
        }else{
            return R.error(BizCodeEnume.LOGINACCT_PASSWORD_INVAILD_EXCEPTION.getCode(),BizCodeEnume.LOGINACCT_PASSWORD_INVAILD_EXCEPTION.getMsg());
        }
    }

4,成员模块登录service实现。

@Override
    public MemberEntity login(MemberLoginVo vo) {
        String loginacct = vo.getLoginacct();
        String password = vo.getPassword();

        //1,转到数据库查询 select * from ums_member where username = ? or mobile = ? or email = ?
        MemberDao baseMapper = this.baseMapper;
        MemberEntity entity = baseMapper.selectOne(new QueryWrapper().eq("username", loginacct).or().eq("mobile", loginacct).or().eq("email", loginacct));
        if(entity == null){
            //如果根据用户名未找到任何信息,则直接登录失败。
            return null;
        }else{
            //根据用户名,找到了信息并比较了密码。
            String passwordDB = entity.getPassword();//获取数据清单的密码。
            BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
            boolean matches = bCryptPasswordEncoder.matches(password, passwordDB);
            if(matches){
                //登录成功
                return entity;
            }else{
                //登录失败
                return null;
            }
        }
//        return null;
    }
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除