一、实现单点登录
有关单点登录的讲解在我的博客中:
1、创建用户表
CREATE TABLE `ucenter_member` (
`id` char(19) NOT NULL COMMENT '会员id',
`openid` varchar(128) DEFAULT NULL COMMENT '微信openid',
`mobile` varchar(11) DEFAULT '' COMMENT '手机号',
`password` varchar(255) DEFAULT NULL COMMENT '密码',
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
`sex` tinyint(2) unsigned DEFAULT NULL COMMENT '性别 1 女,2 男',
`age` tinyint(3) unsigned DEFAULT NULL COMMENT '年龄',
`avatar` varchar(255) DEFAULT NULL COMMENT '用户头像',
`sign` varchar(100) DEFAULT NULL COMMENT '用户签名',
`is_disabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否禁用 1(true)已禁用, 0(false)未禁用',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1(true)已删除, 0(false)未删除',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员表';
2、使用代码生成器,生成逻辑代码的框架
3、controller
将生成的token返回给前端。
@RestController
@RequestMapping("/educenter/member")
@CrossOrigin
public class UcenterMemberController {
@Autowired
private UcenterMemberService ucenterMemberService;
/**
* 登录
* @param ucenterMember
* @return
*/
@PostMapping("/login")
public R ucenterLogin(@RequestBody UcenterMember ucenterMember){
//返回token,使用jwt生成
String token = ucenterMemberService.login(ucenterMember);
return R.ok().data("token", token);
}
}
4、service
public interface UcenterMemberService extends IService<UcenterMember> {
/**
* 登录
* @param ucenterMember
* @return
*/
String login(UcenterMember ucenterMember);
}
5、serviceImpl
使用JWT生成token。
@Service
public class UcenterMemberServiceImpl extends ServiceImpl<UcenterMemberMapper, UcenterMember> implements UcenterMemberService {
@Override
public String login(UcenterMember ucenterMember) {
String mobile = ucenterMember.getMobile();
String password = ucenterMember.getPassword();
QueryWrapper<UcenterMember> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mobile", mobile);
UcenterMember mobileMember = baseMapper.selectOne(queryWrapper);
if (mobileMember == null){ //没有这个手机号
throw new GuliException(20001, "登录失败");
}
//判断密码,将用户传入的密码进行MD5加密,然后跟数据库中密码比较
if (!MD5.encrypt(password).equals(mobileMember.getPassword())){
throw new GuliException(20001, "密码错误");
}
//判断用户是否被禁用
if (mobileMember.getIsDeleted()){
throw new GuliException(20001, "用户被禁用");
}
//登录成功
//生成token
//要使用查出来的mobileMember,因为用户传入的ucenterMember中没有id只有手机号
String token = JwtUtils.getJwtToken(mobileMember.getId(), mobileMember.getPassword());
return token;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/125055.html