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 ...
随机推荐
- Django-CRM项目学习(三)-stark的页面展示
开始今日份整理,主要为stark组件的增删改以及model_form组件的使用以及form组件的回顾 1.list_display_link功能 功能:客制化字段进行跳转到指定的页面(编辑页面) 1. ...
- Redis入门---字符串类型
阅读目录 1.keys * 命令 2.判断一个键是否存在(exists key) 3.删除键 4.获取键值的数据类型 5 递增数字(incr) 6.增加指定的整数 (INCRBY) 7.减少指定的整数 ...
- Centos7.x做开机启动脚本
cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) uname -r 3.10.0-693.11.1.el7.x86_64 vim ...
- wince单实例启动
static class Program { [DllImport("Toolhelp.dll")] public static extern IntPtr CreateToolh ...
- Array.prototype.reduce()
reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. arr.reduce([callback, initialValue]) c ...
- 【zabbix教程系列】二、zabbix特点
一.度量收集 从任何设备,系统,应用上收集指标,收集指标的方法有: 多平台zabbix代理 SNMP and IPMI 代理 无代理监控用户服务 自定义方法 计算和聚合 用户端web监控 二.问题发 ...
- CodeForces 461B Appleman and T
题目链接:http://codeforces.com/contest/461/problem/B 题目大意: 给定一课树,树上的节点有黑的也有白的,有这样一种分割树的方案,分割后每个子图只含有一个黑色 ...
- pc端前端和手機端區別
1.pc端寬度比較固定,手機端可以橫屏或者豎屏: 2.pc端不需要處理手機觸摸,而手機端需要: 3.pc端不需要處理鍵盤事件: 3.pc的瀏覽器內核很多,手機端基本上是webkit或者是基於webki ...
- Javaweb项目 利用JSP响应浏览器
一.javaweb 数据访问流程? 1.浏览器 http 访问服务器 找到 servlet(HttpServeltDemo.java文件) 2.servle 通过dao 访问数据库 数据库将数据返回 ...
- Python——编译标准
注意事项 1.关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包, ...