登录生成令牌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 ...
随机推荐
- getElementsByClassName 方法兼容性封装方法二
var getElmsByClsName = function(className, results) { results = results || []; // 判断浏览器是否支持 getEleme ...
- Windows2003 安装MVC4 环境的步骤
一.作为部署服务器的安装步骤 1.服务器上安装SP2 和 IIS6 2.安装.Net Framework3.5 SP1(完整安装包,包含2.0 2.0SP1,237MB那个安装包) 3.安装.Net ...
- 博客移至 GitHub
新博客地址: github.com/FatliTalk/blog
- hdu 3416 Marriage Match IV 【 最短路 最大流 】
求边不可重复的最短路条数 先从起点到终点用一次dijkstra,再从终点到起点用一次dijkstra,来判断一条边是否在最短路上 如果在,就将这条边的两个端点连起来,容量为1 再跑一下dinic(), ...
- The German Collegiate Programming Contest 2017
B - Building 给一个m各面的多边形柱体,每一侧面有n*n个格子,现在对这些格子染色,看有多少种方式使得多面柱体无论如何旋转都不会与另一个一样. #include <bits/stdc ...
- iOS系统结构
应用交互层.多媒体层.核心服务层.系统层. 参考官方文档apple Develop GuidesiOS Technologies IOS分为四级结构,由上到下为可触摸层,媒体层,核心服务层,核心系统层 ...
- python3 pymysql学习笔记
练手项目需要用到mysql就顺手把mysql也学了,这个模块没什么好说的,比较简单,实际整个过程我都是在学mysql语句,但还是发现了一些问题. fetchall() 获取结果集中的所有行 这个函数难 ...
- vscode代码格式化 空格的配置
一个项目中同事使用webstorm,看我代码的时候说我传上去的会多出空格, VSCode 编辑 Setting.json文件,列出一些可以配置的项目 "javascript.format ...
- PHP下的异步尝试三:协程的PHP版thunkify自动执行器
PHP下的异步尝试系列 如果你还不太了解PHP下的生成器和协程,你可以根据下面目录翻阅 PHP下的异步尝试一:初识生成器 PHP下的异步尝试二:初识协程 PHP下的异步尝试三:协程的PHP版thunk ...
- Python-基础-day4
深浅copy 1.先看赋值运算 h1 = [1,2,3,['aihuidi','hhhh']] h2 = h1 h1[0] = 111 print(h1) print(h2) #结果: # [111, ...