在线博客系统——获取用户信息,退出登录
目录
接口说明
编码实现
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);}
在线博客系统——获取用户信息,退出登录相关推荐
- 微信小程序学习9:获取用户信息进行登录操作 wx.getUserProfile
微信小程序学习9:获取用户信息进行登录操作wx.getUserProfile 2021年4月份左右微信对获取用户的API进行了更改.使用wx.getUserInfo只能获取用户的匿名信息. 要获取用户 ...
- springboot+vue练手级项目,真实的在线博客系统
文章目录 spring boot 练手实战项目说明 基础知识 面试准备 1. 工程搭建 1.1 新建maven工程 1.1.2遇到的bug 1.2 配置 1.3 启动类 2. 首页-文章列表 2.1 ...
- Django博客系统(用户中心展示)
1. 页面展示 1.在users.views.py文件中定义视图 from django.views import Viewclass UserCenterView(View):def get(sel ...
- 个人博客系统开发总结之 第三方登录(QQ、微博)
当别人访问我的博客系统时,如果需要评论,就需要登录.如果此时要求注册,就比较麻烦,并且会引起访问者的反感.于是就采用第三方登录.目前支持QQ.微博登录. QQ登录 QQ互联开放平台为第三方网站提供了丰 ...
- express+node+mysql简单博客系统(一):登录接口
今年一直想学一下node,现在马上就到年底了,赶紧安排! 准备 使用node.express和mysql开发简单的博客系统: 1.先安装node.express和mysql: 2.创建node项目,也 ...
- 一个前端写的php博客系统2--前台展示+后台登录
前台首页展示 首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置... 控制器 文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用 ...
- php 只需qq 获取用户信息,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...
//里客云资源站,likeyunba.com //BY TANKING // header header("Content-Type:application/json"); err ...
- uniapp获取用户信息(登录及个人中心页面的实现)
因为在微信小程序中wx.getuserInfo已经失效,所以我们在uniapp中也应该使用wx.getUserProfile来获取用户信息 页面的逻辑 一上来加载个人中心页,当用户点击未登录三个字时跳 ...
- 微信小程序获取用户信息、登录流程、支付流程
1.获取用户信息 第一种: 通过 open-data 获取 <open-data type="userAvatarUrl"></open-data> 需要注 ...
最新文章
- 独家 | 数据管理在零售、医疗、制造、娱乐、建筑等行业的应用
- tensorflow gpu windows配置步骤教学
- linux std::queue 怎么释放内存_电脑卡慢怎么办?一个小工具帮你轻松释放内存,瞬间提升电脑性能...
- Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题
- 质数——埃式筛法和欧式筛法
- c语言自由存储区,C/C++ 内存分区以及自由存储区和堆的区别
- 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
- xxx项目接口文档模板
- SQL标准语句——思维导图
- 第一次使用MFC开发桌面小程序
- Ubuntu16.040如何解决安装网易云音乐后第二次开机打不开问题
- 解决台式机前耳机插孔没有声音
- 怎样修改word页面页码
- IOS 读二进制数据文件
- 浙大图灵班今年首次招生:院士授课,本科生配学业导师
- 手机游戏修改客户端服务器,游戏服务器 手机客户端
- php实现简单的留言板
- Java——字母大小写全排列
- 史上20大计算机病毒
- Unity与FBX--为什么使用FBX文件