token的设置与获取
以用户登录为例:
application-resources.yml:
#用户session在redis中保存的key
REDIS_STU_SESSION_KEY: REDIS_USER_SESSION #session过期时间
STU_SESSION_EXPIRE: 7200
StuService.java:
//验证用户账号密码
CustomResult checkLogin(User user, HttpSession session); //获取token
CustomResult getStuByToken(String token);
StuServiceImpl.java:
@Autowired
private RedisClient redisClient; @Autowired
private UserMapper userMapper; @Autowired
private TaskMapper taskMapper; @Value("${REDIS_STU_SESSION_KEY}")
private String REDIS_STU_SESSION_KEY;
@Value("${STU_SESSION_EXPIRE}")
private Integer STU_SESSION_EXPIRE; /**
* @return boolean
* @Description //验证用户是否存在
* @Date 2019-03-31 21:59
* @Param [user]
**/
@Override
public CustomResult checkLogin(User user,HttpSession session) {
CustomResult result = new CustomResult(); UserExample userExample = new UserExample();
UserExample.Criteria criteria = userExample.createCriteria();
criteria.andUsernameEqualTo(user.getUsername());
criteria.andPasswordEqualTo(user.getPassword());
List<User> userList1 = userMapper.selectByExample(userExample); //HttpServletRequest request = null;
//HttpSession session = request.getSession();
if (userList1.isEmpty()) {
result.setMsg("账号或密码错误,请重试!");
//return 0;//用户不存在
return result;
} else {
criteria.andRoleEqualTo(2);
List<User> userList2 = userMapper.selectByExample(userExample);
if (userList2.isEmpty()){
result.setMsg("您已成功注册,请等待管理员审核!");
return result;
//return 1;//等待分配权限,管理员审核
}else{
System.out.println("===================="+userList2.get(0));
//登陆成功,设置session
session.setAttribute("stuInfo",userList2.get(0)); User userInfo = userList2.get(0);
//生成token
String token = UUID.randomUUID().toString();
userInfo.setPassword(null);
//用户信息写入redis(:使redis目录分层,更为简洁)
redisClient.set(REDIS_STU_SESSION_KEY + ":" + token, JsonUtil.objectToJson(userInfo));
//session过期时间
redisClient.expire(REDIS_STU_SESSION_KEY + ":" + token,STU_SESSION_EXPIRE);
//Object stu = redisClient.get("stu");
//System.out.println("========123"+stu);
//return 2;//用户存在,通过管理员审核
return CustomResult.ok(token);
} } } /**
* @Description //获取token
* @Date 2019-04-10 16:06
* @Param [token]
* @return com.sun123.springboot.CustomResult
**/
@Override
public CustomResult getStuByToken(String token) {
String json = (String)redisClient.get(REDIS_STU_SESSION_KEY + ":" + token);
//判断是否为空
if(StringUtils.isBlank(json)){
return CustomResult.build(400,"此session已经过期,请重新登录");
}
//若不为空,更新过期时间
redisClient.expire(REDIS_STU_SESSION_KEY + ":" + token,STU_SESSION_EXPIRE);
//返回用户信息
return CustomResult.ok(JsonUtil.jsonToPojo(json,User.class));
}
LoginController.java:
import com.sun123.springboot.CustomResult;
import com.sun123.springboot.entity.User;
import com.sun123.springboot.service.StuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpSession; /**
* @ClassName LoginController
* @Description TODO
* @Date 2019/3/31 20:27
* @Version 1.0
*/
@Controller
public class LoginController { @Autowired
private StuService stuService; @GetMapping("/login")
public String toLogin(){
return "students/login/stu-login";
} @PostMapping("/checkLogin")
@ResponseBody
public CustomResult checkLogin(User user, HttpSession session){
//int flag = stuService.checkLogin(user,session);
CustomResult result = stuService.checkLogin(user, session);
return result; } @GetMapping("/token/{token}")
@ResponseBody
public CustomResult getUserByToken(@PathVariable String token){
CustomResult stuByToken = stuService.getStuByToken(token);
return stuByToken; }
}
代码测试:

查看响应结果:

浏览器访问:http://localhost:8002/token/d6b4f83c-76df-4f99-b6f9-56e6ff9d6acb

token的设置与获取的更多相关文章
- 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调
[源码下载] 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...
- js设置、获取单值cookie和多值cookie
js设置.获取单值cookie和多值cookie,代码如下: var CookieUtil = (function () { var Cookie = function () { // 获取单值coo ...
- 设置与获取Cookie
自己编写的一个Cookie设置与获取函数,大家有什么感觉需要改进的地方,请告知与我,我一定虚心接受. JavaScript - Code: function setCookie(name,value, ...
- php设置和获取cookie
php设置和获取cookie setcookie()调用只带有name参数的setcookie(); ()使失效时间为time()或time-; <?php setcookie(); PHP提供 ...
- js设置与获取Cookie
/*设置与获取Cookie*/ var Cookie ={} Cookie.write = function(key, value, duration){ var d = new Date(); d. ...
- C#设置和获取系统环境变量
C#设置和获取环境变量 1.前言 本来想拿学校机房的Android编辑器直接粘到自己电脑上用,发现它的eclipse是 32位的,而我的JDK是64位的,于是想到干脆装两个JDK,用C#做一个能够更改 ...
- 封装cookie设置和获取的简易方法
(function() { var tool = { expires: "expires", // 过期时间expires path: "path", // 路 ...
- django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法
django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...
- jQuery的DOM操作之设置和获取HTML、文本和值 html()text()val()
1. html()方法: 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的html内容. <html> <head> <met ...
随机推荐
- ORM相关操作
1.一般操作 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs) ...
- python之os
os 系统级别的操作 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell ...
- <转>性能测试指标
下午在家看书,清理收藏栏的内容,翻出来几篇去年收藏的博文,此时再看,真切的感觉到了自己这一年的成长,分享出来,希望看到的童鞋都能有所得,就好... 原文地址:性能测试指标 一.通用指标 指Web应用服 ...
- Busybox的syslogd认识与使用
关键词:rcS.start-stop-daemon.syslogd.syslog().klogd.klogctl().syslog.conf./dev/log.facility/level等等. sy ...
- Gerrit 添加用户
使用ssh添加用户 ssh name@localhost -p 29418 gerrit create-account username --email username@email --full-n ...
- Airflow Python工作流引擎的重要概念介绍
Airflow Python工作流引擎的重要概念介绍 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net/watermelonbig/article/de ...
- ViewPager + TabLayout + Fragment + MediaPlayer的使用
效果图 在gradle里导包 implementation 'com.android.support:design:28.0.0' activity_main <?xml version=&q ...
- Spring自定义类扫描器 ClassPathScanningCandidateComponentProvider
项目中有个需求 读取xml文件,然后 对xml文件进行解析,比如如果是 Gender=0/1的话,分别代表男女. 所以需要在构造函数之后,初始化bean之前进行过滤解析 xml文件: <inte ...
- 洛谷 p1090 合并果子
https://www.luogu.org/problemnew/show/P1090 优先队列的经典题目 体现了stl的优越性 #include<bits/stdc++.h> using ...
- python之继承、抽象类、新式类和经典类
一.上节补充1.静态属性静态属性 : 类的属性,所有的对象共享这个变量 如果用对象名去修改类的静态属性:在对象的空间中又创建了一个属性,而不能修改类中属性的值 操作静态属性应该用类名来操作 例1:请你 ...