当前位置: 首页 > news >正文

建设网站多久asp.net做电商网站

建设网站多久,asp.net做电商网站,吉林网站模板,免费seo刷排名怎么使用jwt#xff0c;token以及redis进行续期#xff1f; 什么是jwt? 什么是token? 结合 JWT、Token 和 Redis 进行续期的一般步骤#xff1a; 生成 JWT#xff1a; 用户登录成功后#xff0c;服务器生成一个 JWT#xff0c;并返回给客户端。 import io.jsonwebtok…怎么使用jwttoken以及redis进行续期 什么是jwt? 什么是token? 结合 JWT、Token 和 Redis 进行续期的一般步骤 生成 JWT 用户登录成功后服务器生成一个 JWT并返回给客户端。 import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm;public class JwtUtil {private static final String SECRET_KEY yourSecretKey;public static String generateToken(String subject) {return Jwts.builder().setSubject(subject).signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();} }将 JWT 存储到 Redis 服务器将生成的 JWT 存储到 Redis 中以便后续验证和续期。 import redis.clients.jedis.Jedis;public class RedisUtil {private static final String REDIS_HOST localhost;private static final int REDIS_PORT 6379;public static void storeTokenInRedis(String key, String token) {try (Jedis jedis new Jedis(REDIS_HOST, REDIS_PORT)) {jedis.set(key, token);}} }客户端保存 JWT 客户端收到 JWT 后将其保存在本地通常可以存储在 Local Storage 或者 Session Storage 中。 LocalStorage 或 SessionStorage 在 Web 应用中可以将 JWT 存储在浏览器的 LocalStorage 或 SessionStorage 中。这些存储方式都是客户端本地的存储机制可以通过 JavaScript API 进行读写操作。LocalStorage 的数据会一直保存除非用户手动清除而 SessionStorage 的数据则只在当前会话期间有效。 // 将 JWT 存储到 LocalStorage localStorage.setItem(jwtToken, token);// 从 LocalStorage 获取 JWT const token localStorage.getItem(jwtToken);Cookie 另一种常见的方式是将 JWT 存储在 Cookie 中。通过设置 Cookie 的方式可以在客户端和服务器之间进行自动传递而不需要显式地在请求头中添加 JWT。 // 将 JWT 存储到 Cookie document.cookie jwtToken${token}; path/;;// 从 Cookie 获取 JWT const token document.cookie.split(; ).find(row row.startsWith(jwtToken)).split()[1];内存 在某些情况下可以将 JWT 存储在客户端的内存中。这种方式通常用于移动应用或桌面应用等场景不适用于 Web 应用因为 Web 页面刷新或关闭后内存中的数据会丢失。 // 在 Java 中使用内存保存 JWT 的示例 String jwtToken;使用 JWT 进行身份验证 客户端在每次请求需要身份验证的资源时将 JWT 放置在请求头中发送给服务器。 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.Jwts;public class JwtUtil {private static final String SECRET_KEY yourSecretKey;public static boolean verifyToken(String token) {try {JwsClaims claims Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token);return true;} catch (Exception e) {return false;}} }验证 JWT 的有效性 服务器收到请求后验证 JWT 的签名和有效期等信息以确认其有效性。 解析 JWT 首先需要解析 JWT并验证其格式是否正确。JWT 通常由三部分组成Header、Payload 和 Signature。可以使用相应的库或工具来解析 JWT确保它们符合 JWT 的标准格式。验证签名 JWT 的 Signature 部分由 Header 和 Payload 使用指定的算法签名而成。为了验证 JWT 的真实性需要使用相同的密钥和算法对 Header 和 Payload 进行签名并与 JWT 中的 Signature 进行比较。如果两者匹配则说明 JWT 没有被篡改过。检查过期时间 JWT 中通常会包含一个过期时间exp字段表示 JWT 的有效期。需要检查当前时间是否晚于过期时间以确保 JWT 尚未过期。可选验证其他声明 JWT 中可能包含其他自定义声明如用户角色、权限等。根据应用需求可以对这些声明进行验证以确保 JWT 的合法性。 下面是一个使用 Java 的示例代码演示如何验证 JWT 的有效性 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; import java.security.Key; import java.util.Date;public class JwtUtil {private static final String SECRET_KEY yourSecretKey;public static boolean validateJwt(String token) {try {Claims claims Jwts.parserBuilder().setSigningKey(Keys.hmacShaKeyFor(SECRET_KEY.getBytes())).build().parseClaimsJws(token).getBody();// 验证过期时间Date expiration claims.getExpiration();if (expiration ! null expiration.before(new Date())) {return false; // JWT 已过期}// 可选其他声明的验证// String username claims.getSubject();// ListString roles (ListString) claims.get(roles);// 进行额外的声明验证return true; // JWT 验证通过} catch (Exception e) {return false; // JWT 验证失败}} }在上述代码中validateJwt 方法接受一个 JWT并返回一个布尔值指示该 JWT 是否有效。如果 JWT 有效则返回 true否则返回 false。 检查 JWT 的过期时间 如果 JWT 即将过期服务器可以发出一个新的 JWT并更新 Redis 中的对应信息。 在第五步中已完成 续期 JWT 服务器根据业务逻辑和安全策略决定是否续期 JWT。如果续期则生成一个新的 JWT更新 Redis 中的相关信息并将新的 JWT 返回给客户端。 public class JwtUtil {private static final String SECRET_KEY yourSecretKey;private static final long EXPIRATION_TIME 86400000L; // 24小时public static String refreshToken(String subject) {return Jwts.builder().setSubject(subject).setExpiration(new Date(System.currentTimeMillis() EXPIRATION_TIME)).signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();} }客户端更新 JWT 客户端收到新的 JWT 后将其替换掉旧的 JWT并更新本地存储中的 Token。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class UpdateJWTClient {private static String jwtToken ; // 存储 JWT 的变量初始为空public static void main(String[] args) {// 模拟从服务器获取新的 JWTString newJWT fetchNewJWT();if (newJWT ! null !newJWT.isEmpty()) {// 替换旧的 JWT 并更新本地存储中的 TokenupdateJWT(newJWT);// 使用新的 JWT 发送请求sendRequestWithNewJWT();} else {System.out.println(Failed to fetch new JWT.);}}// 模拟从服务器获取新的 JWTprivate static String fetchNewJWT() {// 这里应该发送 HTTP 请求到服务器获取新的 JWT// 这里简化为直接返回一个模拟的 JWTreturn new.jwt.token.example;}// 替换旧的 JWT 并更新本地存储中的 Tokenprivate static void updateJWT(String newToken) {jwtToken newToken; // 替换旧的 JWT// 这里应该将新的 JWT 存储在本地例如使用 SharedPreferences// 这里简化为打印出来System.out.println(Updated JWT: jwtToken);}// 使用新的 JWT 发送请求private static void sendRequestWithNewJWT() {try {URL url new URL(https://example.com/api/resource);HttpURLConnection connection (HttpURLConnection) url.openConnection();connection.setRequestMethod(GET);connection.setRequestProperty(Authorization, Bearer jwtToken);int responseCode connection.getResponseCode();if (responseCode HttpURLConnection.HTTP_OK) {// 请求成功读取响应BufferedReader reader new BufferedReader(new InputStreamReader(connection.getInputStream()));String inputLine;StringBuffer response new StringBuffer();while ((inputLine reader.readLine()) ! null) {response.append(inputLine);}reader.close();System.out.println(Response: response.toString());} else {// 请求失败System.out.println(Failed to send request. Response code: responseCode);}} catch (IOException e) {e.printStackTrace();}} }在这个示例中fetchNewJWT 方法模拟了从服务器获取新的 JWT实际情况下应该发送 HTTP 请求到服务器获取。然后updateJWT 方法用新的 JWT 替换旧的 JWT并更新本地存储中的 Token。最后sendRequestWithNewJWT 方法使用新的 JWT 发送请求到服务器。
http://www.w-s-a.com/news/91262/

相关文章:

  • 建设工程信息查询哪个网站好台州做优化
  • wordpress页面回收站位置台州做网站
  • 邢台市行政区划图seo咨询师招聘
  • 外贸网站建设案例网站建设优化开发公司排名
  • 恩施网站优化郑州有没有厉害的seo
  • 电子商务网站建设与管理期末考试题铜山区建设局网站
  • 怎么做非法彩票网站大兴安岭网站建设公司
  • 网站备案授权书模板海外如何淘宝网站建设
  • 网站开发提供源代码dedecms做网站教程
  • 怎么做国际网站首页erp系统一套大概多少钱
  • 做代理网站用什么软件建设网站的企业多少钱
  • 微企免费做网站360收录提交
  • 网站导航页怎么做wordpress数据库批量替换
  • wordpress站点更换域名自己做wordpress 模版
  • 怎么做虚拟的网站东莞常平邮编是多少
  • 电子商务网站和普通网站的区别正规网站建设多少费用
  • 郴州免费招聘网站前端好还是后端好
  • 织梦网站怎样做子域名20个中国风网站设计欣赏
  • wordpress网站搬简约创意logo图片大全
  • 叙述网站制作的流程石家庄58同城最新招聘信息
  • 南昌微信网站建设东莞网站优化软件
  • 爱站数据官网纯静态网站挂马
  • 网站建设公司未来方向3d设计网站
  • 建设部网站 干部学院 一级注册建筑师培训 2014年做网站开发的提成多少钱
  • 网上请人做软件的网站铝合金型材外发加工网
  • 手机网站建设万网山东省作风建设网站
  • 网站策划专员招聘50万县城做地方网站
  • 网站开发公司+重庆wordpress自定义搜索界面
  • 梅州南站学校官网
  • 网站变灰代码 所有浏览器企业邮箱域名怎么填写