谷粒学苑项目实战(十五):实现单点登录与注册功能

简介: 谷粒学苑项目实战(十五):实现单点登录与注册功能

一、实现单点登录



有关单点登录的讲解在我的博客中:

     

浅析单点登录(重点讲解OAuth2+JWT)

 

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;
    }
}


相关文章
|
8月前
|
小程序 测试技术 数据库
0022Java程序设计-ssm微信小程序社区互助平台
0022Java程序设计-ssm微信小程序社区互助平台
36 0
|
10月前
|
前端开发 NoSQL API
美多商城项目(十一)
美多商城项目(十一)
|
前端开发 API
谷粒学苑项目实战(八):实现登录功能
前面我们已经搭建了前端环境,运行起来后是可以看见登录框的,但是由于后端没有写东西,不能成功登录,今天我们就完成这个功能。
173 0
谷粒学苑项目实战(八):实现登录功能
|
JSON 前端开发 easyexcel
谷粒学苑项目实战(十二):课程分类管理模块搭建
谷粒学苑项目实战(十二):课程分类管理模块搭建
158 0
谷粒学苑项目实战(十二):课程分类管理模块搭建
|
SQL Java 程序员
谷粒学苑项目实战(十三):课程管理模块搭建
谷粒学苑项目实战(十三):课程管理模块搭建
148 0
谷粒学苑项目实战(十三):课程管理模块搭建
|
Java 测试技术 数据库
谷粒学苑项目实战(二):讲师管理模块搭建(上)
谷粒学苑项目实战(二):讲师管理模块搭建
201 0
谷粒学苑项目实战(二):讲师管理模块搭建(上)
|
JSON 数据库 数据格式
谷粒学苑项目实战(二):讲师管理模块搭建(下)
谷粒学苑项目实战(二):讲师管理模块搭建
128 0
谷粒学苑项目实战(二):讲师管理模块搭建(下)
|
前端开发 JavaScript
谷粒学苑项目实战(七):搭建前端页面
谷粒学苑项目实战(七):搭建前端页面
156 0
谷粒学苑项目实战(七):搭建前端页面
|
编解码 Java 开发工具
谷粒学苑项目实战(十四):实现阿里云视频点播功能(java编码实现)
视频点播(ApsaraVideo for VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。
662 0
谷粒学苑项目实战(十四):实现阿里云视频点播功能(java编码实现)
|
前端开发
谷粒学苑项目实战(五):统一异常处理
谷粒学苑项目实战(五):统一异常处理
136 0
谷粒学苑项目实战(五):统一异常处理