- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ssm项目实现用户登陆持久化(token)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
用户登录持久化就是每次访问不用账号密码来校验身份,在用户登录第一次之后会返回一个token字符串,之后的访问客户端将这个token加到请求体里发给服务器就可以验证身份了.
利用jedis和jwt创建用户token 。
maven依赖:
1
2
3
4
5
|
<dependency>
<groupid>com.auth0</groupid>
<artifactid>java-jwt</artifactid>
<version>3.3.0</version>
</dependency>
|
创建jwt工具类 。
用于创建token和解析token 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import com.auth0.jwt.jwt;
import com.auth0.jwt.jwtverifier;
import com.auth0.jwt.algorithms.algorithm;
import com.auth0.jwt.interfaces.claim;
import com.auth0.jwt.interfaces.decodedjwt;
public
class
jwtutils {
/**
* 公钥
*/
private
static
string secret =
"qiang"
;
//此处随便设置一个自己的加密符号
public
static
string createtoken(int id, string username,
string type) throws exception {
// 签发时间
date
iatdate =
new
date
();
// 过期时间,7天时间
calendar nowtime = calendar.getinstance();
nowtime.add(calendar.hour, 24 * 7);
date
experiesdate = nowtime.gettime();
map<string, object> map =
new
hashmap<string, object>();
map.put(
"alg"
,
"hs256"
);
map.put(
"typ"
,
"jwt"
);
string token = jwt.create()
.withheader(map)
.withclaim(
"id"
, id)
.withclaim(
"username"
, username)
.withclaim(
"type"
, type)
.withexpiresat(experiesdate)
// 设置过期的日期
.withissuedat(iatdate)
// 签发时间
.sign(algorithm.hmac256(secret));
// 加密
return
token;
}
/**
* 解密
*/
public
static
map<string, claim> verifytoken(string token) throws exception {
jwtverifier verifier = jwt.
require
(algorithm.hmac256(secret)).build();
decodedjwt jwt = null;
try
{
jwt = verifier.verify(token);
//核实token
}
catch
(exception e) {
throw
new
exception(
"登录过期"
);
}
return
jwt.getclaims();
//返回的是解析完的token,是一个map,里面有id,username,type键值对
}
}
|
首先讲讲jedis,jedis是集成了redis的一些命令操作,将其封装的java客户端,一般在其上封装一层作为业务使用,封装如下:
首先导入maven包,这里也需要启动redis服务 。
1
2
3
4
5
|
<dependency>
<groupid>redis.clients</groupid>
<artifactid>jedis</artifactid>
<version>2.9.0</version>
</dependency>
|
然后设计一个jedis工具类将其封装 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import redis.clients.jedis.jedis;
public
class
jedisutils {
private
static
jedis jedis;
//初始化
private
static
void init() {
jedis =
new
jedis(
"localhost"
);
}
//在redis中设置键值对存储
public
static
void settoken(string id, string token, int day) {
int second = day * 60 * 60 * 24;
jedisutils.init();
jedis.set(string.valueof(id), token);
//根据id存储token
jedis.expire(string.valueof(id), second);
//设置token持续时间
}
public
static
string gettoken(string id) {
jedisutils.init();
string token = jedis.get(string.valueof(id));
//获取token
return
token;
}
}
|
到此这篇关于ssm项目实现用户登陆持久化(token)的文章就介绍到这了,更多相关ssm 用户登陆持久化内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/sinat_41905822/article/details/89043642 。
最后此篇关于ssm项目实现用户登陆持久化(token)的文章就讲到这里了,如果你想了解更多关于ssm项目实现用户登陆持久化(token)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想在我的 EC2 实例 AWSFIS-Run-CPU-Stress 上运行 SSM 文档。它通过 AWS 故障注入(inject)模拟器 (FIS) 执行,这需要指定一个 documentARN,具
我正在尝试编写一个 lambda 来监听来自 CloudWatch 的参数存储更改事件,并通过调用 boto3.client('ssm').get_parameter_history(Name=eve
我有一个带有 CloudFormation 堆栈参数的 CDK 应用程序: project_name_param = cdk.CfnParameter( self, "ProjectN
我需要审核大量 AWS 账户以确定哪些 EC2 实例缺少 SSM 代理。然后我需要输出所有这些实例及其标签。 运行 aws ssm describe-instance-information 会列出所
背景 token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。 当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个t
如果想用框架来实现验证码,可以看我的另外一篇: kaptcha 框架的使用很简单的。新手必备。 http://www.zzvips.com/article/171694.html 1、效果图
SpringBoot内部类注入 没有限制随意都能注入,会自动去找对应的内部类的,只要是能注入进容器中的,都能像正常的bean一样的使用 package com.service; import org
我在 lambda 中编写了 python 代码,用于从 SSM 运行命令,但出现错误错误 回复:{ "errorMessage": "2019-11-26T10:51:09.649Z d6a9aff
夏天到了、小雪来给大家降降温 话不多说、直接进入主题 主要功能模块设计: 登录注册、首页信息浏览、选课分类查看、选课详情查看、评论交流、收藏、浏览量、以及后台数据管理、用户
主要技术实现设计:spring、 springmvc、 springboot、 springboot security权限控制、mybatis 、session、 jquery 、 md5 、boo
主要功能设计: 用户、区域、物质类型、物质详情、物质申请和审核以及我的申请和通知公告以及灵活控制菜单权限 主要技术实现:spring、 springmvc、 springboot、sprin
第一次写上传图片的代码,碰到很多问题。昨天做了整整一天,终于在晚上的时候成功了。大声欢呼。 但是,做完之后,还是有很多问题想不通。所以在这里也算是写个笔记,日后忘记了可以回顾,也算请教各路朋友。(
1.1 maven项目pom管理 ? 1
我需要一些帮助/指导,了解如何安全访问 SSM 参数存储以获取现有 secureString 上的(已解密)值以用于其他 Terraform 资源? 例如,我们在 SSM 中存储了一个用于 CI 的
我已经编写了一个代码来为我获取 SSM 参数 import boto3 client = boto3.client('ssm') def lambda_handler(event, c
目录 咱们废话不多说进入主题、系统主页展示: 用户信息管理; 角色权限控制管理: 管理员查看灵活配置; 插入一小部分代码段 通知公告信息管
目录 1、基本概念 1.1、Spring 1.2、SpringMVC
我试过 moto,但我总是得到: botocore.exceptions.ClientError: An error occurred (UnrecognizedClientException) wh
我正在尝试同步一个 S3 存储桶,这需要将近 3 个小时才能完全同步。 同步桶.sh: nohup aws s3 sync "$source_bucket/$folder/" "s3://$desti
我有一个触发 Jenkins 工作的 lambda 函数。我想在添加新的 ssm 参数时调用此 lambda。我在 cloud-watch 事件模式中添加了以下自定义事件模式。 { "source
我是一名优秀的程序员,十分优秀!