01.Session:
优点:Session是存储在服务端的,安全
缺点:
服务器集群环境下无法直接使用Session
移动端APP(Android、IOS)中无法使用Cookie
用户可以自己禁用Cookie
Cookie不能跨域
02.令牌技术:JWT令牌 JSON Web Token (官网:https://jwt.io/)
1.定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字
签名的存在,这些信息是可靠的。
2.JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)
第一部分:Header(头), 记录令牌类型、签名算法等。 例如:
{“alg”:”HS256″,”type”:”JWT”}
第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等。 例如:
{“id”:”1″,”username”:”Tom”}
第三部分:Signature(签名),防止Token被篡改、确保安全性。将header、payload,并加
入指定秘钥,通过指定签名算法计算而来
3.优点:
支持PC端、移动端
解决集群环境下的认证问题
减轻服务器的存储压力(无需在服务器端存储)
缺点:需要自己实现(包括令牌的生成、令牌的传递、令牌的校验)
4.JWT令牌生成和校验
4.1 添加依赖
io.jsonwebtokenjjwt0.9.1
---------demo---------
package com.alex.utils;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.Map;public class JwtUtils {
private static String signKey="chenalex";
private static long expire=2436001000;
/**
* 生产jwt令牌
* @param claims
* @return
*/
public static String generateJWT(Map claims,long expires){
expires=expire;
String jwt= Jwts.builder()
.addClaims(claims)
.signWith(SignatureAlgorithm.HS256,signKey)
.setExpiration(new Date(System.currentTimeMillis()+ expires))
.compact();
return jwt;
}
/**
* 解析jwt
* 解析并返回jwt第2部分的payload数据
*/
public static Claims parseJWT(String jwt){
Claims claims=Jwts.parser()
.setSigningKey(signKey)
.parseClaimsJws(jwt)
.getBody();
return claims;
}
}
—————call——————
@Test
public void testJWT(){
Map claims=new HashMap();
claims.put(“id”,1);
claims.put(“name”,”alexchen”);
String token = JwtUtils.generateJWT(claims,3600);
System.out.println(token);
Claims claimss = JwtUtils.parseJWT(token);
System.out.println(claimss);
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 2023(WAIC)智能驾驶科技峰会丨拓数派大模型下的数据计算系统,助力汽车智能化产业数据增值
2023智能驾驶科技峰会在上海圆满落幕,本次大会由世界人工智能大会(WAIC)组委会办公室指导,浦东新区人民政府支持,浦东新区科技和经济委员会、中国 (上海)自由贸易试验区管理委员会金桥管理局主办,海内外院士和业界重磅嘉宾齐聚一堂,共话产业新趋势。拓数派作为全…