1.在gulimall-auth-server项目vo包下新建UserLoginVo
package com.atguigu.gulimall.auth.vo;
import lombok.Data;
@Data
public class UserLoginVo {
private String loginacct;
private String password;
}
2.在gulimall-member项目vo包下新建MemberLoginVo
package com.atguigu.gulimall.member.vo;
import lombok.Data;
@Data
public class MemberLoginVo {
private String loginacct;
private String password;
}
3.MemberController中添加login方法
@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方法
@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 >登 录</a></button></li>
</ul>
</form>
</div>