以用户登录为例:

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的设置与获取的更多相关文章

  1. 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调

    [源码下载] 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...

  2. js设置、获取单值cookie和多值cookie

    js设置.获取单值cookie和多值cookie,代码如下: var CookieUtil = (function () { var Cookie = function () { // 获取单值coo ...

  3. 设置与获取Cookie

    自己编写的一个Cookie设置与获取函数,大家有什么感觉需要改进的地方,请告知与我,我一定虚心接受. JavaScript - Code: function setCookie(name,value, ...

  4. php设置和获取cookie

    php设置和获取cookie setcookie()调用只带有name参数的setcookie(); ()使失效时间为time()或time-; <?php setcookie(); PHP提供 ...

  5. js设置与获取Cookie

    /*设置与获取Cookie*/ var Cookie ={} Cookie.write = function(key, value, duration){ var d = new Date(); d. ...

  6. C#设置和获取系统环境变量

    C#设置和获取环境变量 1.前言 本来想拿学校机房的Android编辑器直接粘到自己电脑上用,发现它的eclipse是 32位的,而我的JDK是64位的,于是想到干脆装两个JDK,用C#做一个能够更改 ...

  7. 封装cookie设置和获取的简易方法

    (function() { var tool = { expires: "expires", // 过期时间expires path: "path", // 路 ...

  8. django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法

    django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...

  9. jQuery的DOM操作之设置和获取HTML、文本和值 html()text()val()

    1. html()方法: 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的html内容. <html> <head> <met ...

随机推荐

  1. https进行配置以及http跳转到https配置

    https配置: nginx配置 server { listen 443; server_name localhost; ssl on; root html; index index.html ind ...

  2. split函数用法

    split函数详解   split翻译为分裂.  split()就是将一个字符串分裂成多个字符串组成的列表. split()当不带参数时以空格进行分割,当代参数时,以该参数进行分割. //---当不带 ...

  3. python 通过 http、dns、icmp判断网络状态

    #http使用requests发包bs4解析,dns.icmp 使用scapy发包import time import threading import requests,bs4 from scapy ...

  4. 播放器更改语言归属地后Cnario player软件无法启动的问题

    打开系统运行,输入regedit,进入注册表编辑器. 找到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\C-nario\Player下面culture 的值,删除即可 ...

  5. c# pda

    1.去除标题栏 FormBorderStyle属性设置为none 2.去除任务栏 [System.Runtime.InteropServices.DllImport("coredll.dll ...

  6. redis从入门到高可用 Redis复制的原理与优化

    需要的联系我,QQ:1844912514

  7. CentOS7下解决yum install mysql-server 异常:No package mysql-server available.问题

    yum安装mysql-server没有可用包问题解决方法: step 1: wget http://repo.mysql.com/mysql-community-release-el7-5.noarc ...

  8. "unexpected console statement” in Node.js

    .eslintrc.js module.exports = { rules: { 'no-console': 'off', }, };

  9. 2019-04-03 研究EasyWeb有感

    今天从往常睡到11点多才起床的状态中一下子转回9点前起床,起床第一件事就是开始研究这框架 1. 根据这框架的说明,首先搭建IDEA开发环境,下载.破解:当从EasyWeb官网下载了两个框架(一个是前端 ...

  10. python之路4-文件操作

    对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 f = open('lyrics','r',encoding='utf-8') read_line = f.r ...