目录

接口说明

编码实现

Controller控制层

Service业务逻辑层

Vo对象

前端测试


接口说明

需要从http的header里面拿到参数,这样传参相对来说安全一些,
返回是数据是我们用户相关的数据,id,账号、昵称和头像

接口url:/users/currentUser

请求方式:GET

请求参数:

参数名称 参数类型 说明
Authorization string 头部信息(TOKEN)

返回数据:

{"success": true,"code": 200,"msg": "success","data": {"id":1,"account":"1","nickaname":"1","avatar":"ss"}
}

编码实现

Controller控制层

UsersController :

package com.huing.blog.controller;import com.huing.blog.service.SysUserService;
import com.huing.blog.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author huing* @create 2022-07-05 10:03*/
@RestController
@RequestMapping("users")
public class UsersController {@Autowiredprivate SysUserService sysUserService;@GetMapping("currentUser")public Result currentUser(@RequestHeader("Authorization") String token){return sysUserService.findUserByToken(token);}
}

Service业务逻辑层

SysUserService接口:

    /*** 根据token获取用户信息* @param token* @return*/Result findUserByToken(String token);

SysUserServiceImpl实现类:

    @Overridepublic Result findUserByToken(String token) {/*** 1.token合法性校验*      是否为空,解析是否成功,redis是否存在* 2.如果校验失败,返回错误* 3.如果成功,返回对应结果LoginUserVo*/SysUser sysUser = loginService.checkToken(token);if (sysUser == null){return Result.fail(ErrorCode.TOKEN_ERROR.getCode(),ErrorCode.TOKEN_ERROR.getMsg());}LoginUserVo loginUserVo = new LoginUserVo();BeanUtils.copyProperties(sysUser,loginUserVo);loginUserVo.setId(String.valueOf(sysUser.getId()));return Result.success(loginUserVo);}

loginService.checkToken(token)接口:

    /*** 检验token合法性,拿到redis中的user信息* @param token* @return*/SysUser checkToken(String token);

LoginServiceImpl接口:

    @Overridepublic SysUser checkToken(String token) {if (StringUtils.isBlank(token)){return null;}Map<String, Object> map = JWTUtils.checkToken(token);if (map == null){return null;}String userJson = redisTemplate.opsForValue().get("TOKEN_" + token);if (userJson == null){return null;}SysUser sysUser = JSON.parseObject(userJson, SysUser.class);return sysUser;}

Vo对象

LoginUserVo:

package com.huing.blog.vo;import lombok.Data;/*** @Author huing* @Create 2022-07-05 10:51*/
@Data
public class LoginUserVo {private String id;private String account;private String nickname;private String avatar;
}

前端测试

退出登录

LogoutController:

package com.huing.blog.controller;import com.huing.blog.service.LoginService;
import com.huing.blog.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @Author huing* @Create 2022-07-05 15:38*/
@RestController
@RequestMapping("logout")
public class LogoutController {@Autowiredprivate LoginService loginService;/*** 退出登录* @return*/@GetMappingprivate Result logout(@RequestHeader("Authorization") String token){return loginService.logout(token);}
}

LoginService:

    /*** 退出登录* @param token* @return*/Result logout(String token);

LoginServiceImpl:

    @Overridepublic Result logout(String token) {redisTemplate.delete("TOKEN_" + token);return Result.success(null);}

在线博客系统——获取用户信息,退出登录相关推荐

  1. 微信小程序学习9:获取用户信息进行登录操作 wx.getUserProfile

    微信小程序学习9:获取用户信息进行登录操作wx.getUserProfile 2021年4月份左右微信对获取用户的API进行了更改.使用wx.getUserInfo只能获取用户的匿名信息. 要获取用户 ...

  2. springboot+vue练手级项目,真实的在线博客系统

    文章目录 spring boot 练手实战项目说明 基础知识 面试准备 1. 工程搭建 1.1 新建maven工程 1.1.2遇到的bug 1.2 配置 1.3 启动类 2. 首页-文章列表 2.1 ...

  3. Django博客系统(用户中心展示)

    1. 页面展示 1.在users.views.py文件中定义视图 from django.views import Viewclass UserCenterView(View):def get(sel ...

  4. 个人博客系统开发总结之 第三方登录(QQ、微博)

    当别人访问我的博客系统时,如果需要评论,就需要登录.如果此时要求注册,就比较麻烦,并且会引起访问者的反感.于是就采用第三方登录.目前支持QQ.微博登录. QQ登录 QQ互联开放平台为第三方网站提供了丰 ...

  5. express+node+mysql简单博客系统(一):登录接口

    今年一直想学一下node,现在马上就到年底了,赶紧安排! 准备 使用node.express和mysql开发简单的博客系统: 1.先安装node.express和mysql: 2.创建node项目,也 ...

  6. 一个前端写的php博客系统2--前台展示+后台登录

    前台首页展示 首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置... 控制器 文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用 ...

  7. php 只需qq 获取用户信息,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...

    //里客云资源站,likeyunba.com //BY TANKING // header header("Content-Type:application/json"); err ...

  8. uniapp获取用户信息(登录及个人中心页面的实现)

    因为在微信小程序中wx.getuserInfo已经失效,所以我们在uniapp中也应该使用wx.getUserProfile来获取用户信息 页面的逻辑 一上来加载个人中心页,当用户点击未登录三个字时跳 ...

  9. 微信小程序获取用户信息、登录流程、支付流程

    1.获取用户信息 第一种: 通过 open-data 获取 <open-data type="userAvatarUrl"></open-data> 需要注 ...

最新文章

  1. 独家 | 数据管理在零售、医疗、制造、娱乐、建筑等行业的应用
  2. tensorflow gpu windows配置步骤教学
  3. linux std::queue 怎么释放内存_电脑卡慢怎么办?一个小工具帮你轻松释放内存,瞬间提升电脑性能...
  4. Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题
  5. 质数——埃式筛法和欧式筛法
  6. c语言自由存储区,C/C++ 内存分区以及自由存储区和堆的区别
  7. 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
  8. xxx项目接口文档模板
  9. SQL标准语句——思维导图
  10. 第一次使用MFC开发桌面小程序
  11. Ubuntu16.040如何解决安装网易云音乐后第二次开机打不开问题
  12. 解决台式机前耳机插孔没有声音
  13. 怎样修改word页面页码
  14. IOS 读二进制数据文件
  15. 浙大图灵班今年首次招生:院士授课,本科生配学业导师
  16. 手机游戏修改客户端服务器,游戏服务器 手机客户端
  17. php实现简单的留言板
  18. Java——字母大小写全排列
  19. 史上20大计算机病毒
  20. Unity与FBX--为什么使用FBX文件

热门文章

  1. 7 Workflow
  2. 前端css让div浮动,Web前端篇:css浮动
  3. 微信小程序生态1-初识小程序
  4. 深度学习数学基础之线性代数
  5. android热敏打印机图片乱码,微信小程序小票打印功能(以及中文乱码的解决)...
  6. web安全 维护及其服务器的管理,web服务器的管理及维护.pdf
  7. 论文解读:多层肽 - 蛋白质相互作用预测的深度学习框架
  8. android加密参数定位方法
  9. 知乎上48个神回复,真心值得一看!
  10. 图像分类篇——AlexNet详解