登录生成令牌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 ...
随机推荐
- Android Handler学习笔记
已经习惯了挖坑不填,继续任性一下,周一到周五继续挖坑,每周六周日负责填坑. 1.从Android UI线程谈起 出于性能考虑,Android 中的UI操作并不是线程安全的,所以Android中规定只能 ...
- UNP学习笔记4——I/O复用:select和poll函数
1 概述 之间的学习中发现,传统的阻塞式系统调用不仅浪费进程运行时间,而且会带来狠毒问题.因此进程需要有一种预先告知内核的能力,使得内核一旦发现进程指定的一个或者多个I/O条件就绪,它就通知进程.这个 ...
- 深入剖析 iOS 性能优化
问题种类 时间复杂度 在集合里数据量小的情况下时间复杂度对于性能的影响看起来微乎其微.但如果某个开发的功能是一个公共功能,无法预料调用者传入数据的量时,这个复杂度的优化显得非常重要了.上图列出了各种情 ...
- 最新消息,CDRX7冰点价再返现,你知道么?
一年一度的七夕又到来了,这不很多的单身狗朋友们都已经自备好了狗粮,准备在家里宅上一天呢? 开个玩笑今天小编就为各位带来了 一个劲爆大消息... Deng/deng/deng/deng..就是备受万众瞩 ...
- 粘包_Server
from socket import *# import subprocessip_port = ('127.0.0.1',8080)back_log = 5buffer_size = 1024tcp ...
- Java 实现简单的RPC框架
0 引言 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用).He ...
- JS 日历
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- Spark 代码走读之 Cache
Spark是基于内存的计算模型,但是当compute chain非常长或者某个计算代价非常大时,能将某些计算的结果进行缓存就显得很方便了.Spark提供了两种缓存的方法 Cache 和 checkPo ...
- Python笔记(28)-----继承
来自https://blog.csdn.net/sunwukong_hadoop/article/details/80175292 1.Python的继承以及调用父类成员 python子类调用父类成员 ...
- maven 测试写入JRE参数
项目在测试时碰到一个问题,就是JVM加载参数的问题. web项目本身在注入配置信息的时候,读取的是本地的配置文件,但是配置文件的位置是卸载tomcat 里面配置的JAVA_OPTS里面的. 问题出现了 ...