- 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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在开发一个应用程序,它使用 OAuth - 基于 token 的身份验证。 考虑到我们拥有访问和刷新 token ,这就是流程的样子。 Api call -> intercepter append
如何取消标记此代码的输出? 类(class)核心: def __init__(self, user_input): pos = pop(user_input) subject = ""
当我使用命令 kubectl 时与 --token标记并指定 token ,它仍然使用 kubeconfig 中的管理员凭据文件。 这是我做的: NAMESPACE="default" SERVICE
我正在制作 SPA,并决定使用 JWT 进行身份验证/授权,并且我已经阅读了一些关于 Tokens 与 Cookies 的博客。我了解 cookie 授权的工作原理,并了解基本 token 授权的工作
我正在尝试从应用服务获取 Google 的刷新 token ,但无法。 日志说 2016-11-04T00:04:25 PID[500] Verbose Received request: GET h
我正在开发一个项目,只是为了为 java 开发人员测试 eclipse IDE。我是java新手,所以我想知道为什么它不起作用,因为我已经知道该怎么做了。这是代码: public class ecli
我正在尝试使用 JwtSecurityTokenHandler 将 token 字符串转换为 jwt token 。但它出现错误说 IDX12709: CanReadToken() returned
我已阅读文档 Authentication (来自 Facebook 的官方)。我仍然不明白 Facebook 提供的这三种访问 token 之间的区别。网站上给出了一些例子,但我还是不太明白。 每个
我的部署服务器有时有这个问题,这让我抓狂,因为我无法在本地主机中重现,我已经尝试在我的 web.config 中添加机器 key ,但没有成功远。 它只发生在登录页面。 我的布局:
我已经设法获得了一个简单的示例代码,它可以创建一个不记名 token ,还可以通过阅读 stackoverflow 上的其他论坛来通过刷新 token 请求新的不记名 token 。 启动类是这样的
如果我有以前的刷新 token 和使用纯 php 的访问 token ,没有 Google Api 库,是否可以刷新 Google Api token ?我在数据库中存储了许多用户刷新和访问 toke
我通过 Java 应用程序使用 Google 电子表格时遇到了问题。我创建了应用程序,该应用程序运行了 1 年多,没有任何问题,我什至在 Create Spreadsheet using Google
当我有一个有效的刷新 token 时,我正在尝试使用 Keycloak admin REST API 重新创建访问 token 。 我已经通过调用 POST/auth/realms/{realm}/p
我正在尝试让第三方 Java 客户端与我编写的 WCF 服务进行通信。 收到消息时出现如下异常: Cannot find a token authenticator for the 'System.I
在尝试将数据插入到我的 SQl 数据库时,我收到以下错误 System.Data.SqlServerCe.SqlCeException: There was an error parsing the
使用数据库 session token 系统,我可以让用户使用用户名/密码登录,服务器可以生成 token (例如 uuid)并将其存储在数据库中并将该 token 返回给客户端。其上的每个请求都将包
我最近注册了 Microsoft Azure 并设置了认知服务帐户。使用 Text Translation API Documentation 中的说明我能够使用 interactive online
我使用 IAntiforgery API 创建了一个 ASP.Net Core 2 应用程序。 这提供了一种返回 cookie 的方法。 客户端获取该 cookie,并在后续 POST 请求中将该值放
我正在使用 spacy 来匹配某些文本(意大利语)中的特定表达式。我的文本可以多种形式出现,我正在尝试学习编写一般规则的最佳方式。我有如下 4 个案例,我想写一个适用于所有案例的通用模式。像这样的东西
我无法理解 oauth 2.0 token 的原则处理。 我的场景是,我有一个基于 web 的前端后端系统,带有 node.js 和 angular 2。用户应该能够在此站点上上传视频。然后创建一些额
我是一名优秀的程序员,十分优秀!