认证服务(8)-账号密码登录

1.在gulimall-auth-server项目vo包下新建UserLoginVo

package com.atguigu.gulimall.auth.vo;

import lombok.Data;

/**
 * 登录VO
 * @author zfh
 * @email hst1406959716@163.com
 * @date 2022-01-07 09:43:46
 */
@Data
public class UserLoginVo {

    private String loginacct;

    private String password;
}

2.在gulimall-member项目vo包下新建MemberLoginVo

package com.atguigu.gulimall.member.vo;

import lombok.Data;

/**
 * 登录VO
 * @author zfh
 * @email hst1406959716@163.com
 * @date 2022-03-27 09:43:46
 */
@Data
public class MemberLoginVo {
    private String loginacct;

    private String password;
}

3.MemberController中添加login方法

 /**
  * 登录
  * @param vo
  * @return
  */
 @PostMapping(value = "/login")
 public R login(@RequestBody MemberLoginVo vo) {
     MemberEntity memberEntity = memberService.login(vo);
     if(memberEntity != null){
         return R.ok();
     }else{
         return R.error(BizCodeEnume.LOGINACCT_PASSWORD_EXCEPTION.getCode(),BizCodeEnume.LOGINACCT_PASSWORD_EXCEPTION.getMsg());
     }
 }

4.MemberService中添加login方法

MemberEntity login(MemberLoginVo vo);

5.MemberServiceImpl中添加login方法实现

@Override
public MemberEntity login(MemberLoginVo vo) {
    String loginacct = vo.getLoginacct();
    //根据用户名查询用户
    MemberEntity memberEntity = this.baseMapper.selectOne(new QueryWrapper<MemberEntity>().eq("username", loginacct)
            .or().eq("mobile", loginacct));
    if(memberEntity == null){
        return null;
    }else {
        String passwordOfDB = memberEntity.getPassword();
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
        //密码匹配
        boolean matches = bCryptPasswordEncoder.matches(vo.getPassword(), passwordOfDB);
        if(matches){
            return memberEntity;
        }else{
            return null;
        }
    }
}

6.在gulimall-auth-server项目MemberFeignService中添加远程接口

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

7.在gulimall-auth-server项目LoginController中添加login方法

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

8.修改login页面

<div class="si_bom1 tab" style="display: none;">
	<div class="error">
		<div></div>
		请输入账户名和密码
	</div>
	<form action="/login" method="post">
		<div style="color: red" th:text="${errors != null ? (#maps.containsKey(errors, 'msg') ? errors.msg : '') : ''}"></div>
		<ul>
			<li class="top_1">
				<img src="/static/login/JD_img/user_03.png" class="err_img1" />
				<input type="text" name="loginacct" placeholder=" 邮箱/用户名/已验证手机" class="user" />
			</li>
			<li>
				<img src="/static/login/JD_img/user_06.png" class="err_img2" />
				<input type="password" name="password" placeholder=" 密码" class="password" />
			</li>
			<li class="bri">
				<a href="/static/login/">忘记密码</a>
			</li>
			<li class="ent"><button class="btn2" type="submit"><a >&nbsp; &nbsp;</a></button></li>
		</ul>
	</form>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值