登录生成令牌token存于redis
package com.medic.rest.province.base.home;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import com.medic.rest.province.BaseRestObject;
import com.medic.rest.province.RedisTool;
import com.medic.rest.province.base.management.UserRoleModel;
import com.zdzsoft.rest.RestContext;
import com.zdzsoft.rest.annotation.RestMethod;
import com.zdzsoft.rest.annotation.RestObject;
import com.zdzsoft.rest.annotation.RestParam;
import com.zdzsoft.rest.annotation.RestReturn;
import com.zdzsoft.rest.model.QueryDao;
@RestObject(name = "UserSecurity", alia = "", desc = "", path = "/province/base/home/User")
public class UserSecurity extends BaseRestObject {
private static Random rand = new Random(System.currentTimeMillis());
private static int token_seed = 0;
@RestMethod(name = "", alia = "登录", desc = "")
@RestReturn(name = "user", alia = "", type = "[<UserRole>]")
public Object login(RestContext context) {
QueryDao dao = getQueryDao();
dao.addWhereCondition(context, UserRoleModel.class);
HashMap<String, Object> result = new HashMap<String, Object>();
result.put("token", "");
result.put("user", "");
result.put("role", "");
List<?> list = dao.query(UserRoleModel.class, 0, 1);
if (list == null || list.isEmpty()) {
return result;
}
UserRoleModel user = (UserRoleModel) list.get(0);
String token = getNextToken();
String value = user.getUser_name() + ";" + user.getRole();
RedisTool.get().set(token, value, 15 * 60);
result.put("token", token);
result.put("user", user.getUser_name());
result.put("role", user.getRole());
return result;
}
@RestMethod(name = "", alia = "测试", desc = "")
@RestReturn(name = "user", alia = "", type = "[<UserRole>]")
public Object test(RestContext context,
@RestParam(name = "token", validate = "notnull") String token) {
HashMap<String, Object> result = new HashMap<String, Object>();
result.put("token", "");
result.put("user", "");
result.put("role", "");
if (token != null && token.length() > 0) {
String value = RedisTool.get().get(token);
if (value != null && value.length() > 0) {
String[] str = value.split(";");
if (str.length == 2) {
String name = str[0];
String role = str[1];
result.put("token", token);
result.put("user", name);
result.put("role", role);
RedisTool.get().expire(token, 15*60);
}
}
}
return result;
}
@RestMethod(name = "", alia = "退出", desc = "")
@RestReturn(name = "flag", alia = "执行结果", type = "")
public boolean logout(RestContext context,
@RestParam(name = "token", validate = "notnull") String token) {
if (token != null && token.length() > 0) {
RedisTool.get().delete(token);
}
return true;
}
public static boolean check(String token) {
if (token != null && token.length() > 0) {
String value = RedisTool.get().get(token);
if (value != null && value.length() > 0) {
return true;
}
}
return false;
}
public String getNextToken() {
String token = toString(rand.nextInt(9999));
synchronized (this) {
token += toString(token_seed);
token_seed = (token_seed + 1) % 9999;
}
return token;
}
private String toString(int value) {
String str = "" + value;
while (str.length() < 4) {
str = '0' + str;
}
return str;
}
}
登录生成令牌token存于redis的更多相关文章
- FastAPI 学习之路(五十六)将token存放在redis
在之前的文章中,FastAPI 学习之路(二十九)使用(哈希)密码和 JWT Bearer 令牌的 OAuth2,FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2,Fa ...
- RESTful登录设计(基于Spring及Redis的Token鉴权)
转载自:http://www.scienjus.com/restful-token-authorization/ http://m.blog.csdn.net/article/details?id=4 ...
- 登录令牌 Token 介绍
Token值介绍 token 值: 登录令牌.利用 token 值来判断用户的登录状态.类似于 MD5 加密之后的长字符串. 用户登录成功之后,在后端(服务器端)会根据用户信息生成一个唯一的值.这个 ...
- 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现
概述: ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, ...
- ASP.NET Web APIs 基于令牌TOKEN验证的实现(保存到DB的Token)
http://www.cnblogs.com/niuww/p/5639637.html 保存到DB的Token 基于.Net Framework 4.0 Web API开发(4):ASP.NET We ...
- 令牌Token和会话Session原理与攻略
本篇文章将从无到完整的登录框架或API详细讲述登录令牌原理.攻略等安全点. 有些协议或框架也喜欢把令牌叫票据(Ticket),不论是APP还是Web浏览器,很多框架或协议都用到了本文所说的这套类似的认 ...
- Web APIs 基于令牌TOKEN验证的实现
Web APIs 基于令牌TOKEN验证的实现 概述: ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-9.使用JWT生成用户Token回写客户端
笔记 9.使用JWT生成用户Token回写客户端 简介:讲解用户授权登录后,需要生成登录凭证重定向到页面上 1.获取当前页面访问地址 2.根据User基本信息生成token 3.重定向到指定页 ...
- 【ASP.NET Core快速入门】(十一)应用Jwtbearer Authentication、生成jwt token
准备工作 用VSCode新建webapi项目JwtAuthSample,并打开所在文件夹项目 dotnet new webapi --name JwtAuthSample 编辑JwtAuthSampl ...
随机推荐
- Function 和 eval 知识点总结
1 Function 1.1 函数的创建方式 1 函数声明 2 函数表达式 3 new Function // 1 function foo() {} // 2 var foo = function( ...
- 关于iOS11上MJRefresh tabview刷新后,重新加载另一组数据, 回不到顶部或者头尾显示混乱等问题解决
MJRefresh在iOS11上存在很多bug 比如在iphoenx上首尾仍会显示的问题 刷新数据后tableview置顶不上去等问题 虽然官方给出了适配方案 但是问题还没有的到解决 比如tabvi ...
- python2中新式类和旧式类的对比【译】
Classes and instances come in two flavors: old-style (or classic) and new-style. ➤类和实例分为两大类:旧式类和新式类. ...
- HDU 1203 I NEED A OFFER!【01背包】
解题思路:攒下的钱n相当于包的容量,然后是m个学校的申请费用,申请费用相当于每一个物品的消耗,得到offer的概率相当于每一个物品的价值. 因为要求的是至少得到一份0ffer的概率的最大概率,可以转化 ...
- 备份和恢复ZBrush文件
ZBrush可以自动保存绘图的备份副本,并在发生系统错误时提醒您恢复备份副本.当ZBrush软件遇到崩溃.导致错误.非正常退出的时候,可能之前所做的努力就会功亏一篑,那么,在ZBrush软件中能否将文 ...
- LeetCode Golang 9.回文数
9. 回文数 第一种办法 :itoa 转换为字符串进行处理: package main import ( "strconv" "fmt" ) //判断一个整数是 ...
- 关于<marquee>、<form>、input中的<text>、<password>、<hidden>、<wenbenkuang>、<reset>、<image>、<submit>、<radio>、<checkbox>以及<select><iframe src>的用法
<html> <head> <meta charset="UTF-8"> <title></ ...
- luogu P3391 【模板】文艺平衡树(Splay) 非旋转treap
Code: #include<bits/stdc++.h> using namespace std; void setIO(string s) { string in=s+".i ...
- Pyhton学习——Day22
#有缩进的代码表示局部作用域的代码#if_name_ =='_main_' # while True#先引入一个os模块import os,sys,time,json# print(os.path.d ...
- Vue学习之路第十篇:简单计算器的实现
前面九篇讲解了vue的一些基础知识,正所谓:学以致用,今天我们将用前九篇的基础知识,来模拟实现计算器的简单功能,项目价值不高,纯粹是为了加深掌握所学知识. 学前准备: 需要掌握JavaScript的e ...