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

网站项目怎么做招远网站建设公司地址

网站项目怎么做,招远网站建设公司地址,嘉兴电子网站建设,小学生ppt模板免费下载1、介绍 accessToken#xff0c;通常是用于身份验证和授权的令牌,它可以用于前端和后端#xff0c;具体使用方式取决于应用程序的架构和需求。 前端应用 accessToken通常用于向后端API发送请求时进行身份验证和授权。 #xff08;1#xff09;前端应用程序会在用户登录成…1、介绍 accessToken通常是用于身份验证和授权的令牌,它可以用于前端和后端具体使用方式取决于应用程序的架构和需求。 前端应用 accessToken通常用于向后端API发送请求时进行身份验证和授权。 1前端应用程序会在用户登录成功后获取accessToken 2并将accessToken存储在本地; 3然后在每次请求API时将accessToken作为请求头或参数发送给后端 4后端会验证accessToken的有效性并根据权限决定是否允许请求。后端应用 accessToken通常用于验证客户端的身份和权限 1后端应用程序会接收到前端发送的accessToken 2对accesToken进行验证 3验证方式 1通过访问授权服务器进行验证 2通过解析和验证accessToken的签名来确保其有效性。 2、后端生成accessToken 2.1 生成accessToken基本思想 accessToken通常是由后端生成的 在前后端分离的架构中前端通过向后端发送用户名和密码等凭证安全的身份验证机制进行身份验证后端验证成功后会生成一个唯一的accessToken其通常是一个加密的字符串用于标识用户的身份和权限并将其存储在后端服务器数据库中或作为一个临时的令牌返回给前端前端将其保存到本地。 前端在后续的请求中携带这个accessToken,后端通过验证accessToken的有效性来确认用户的身份和权限 2.2 生成accessToken基本步骤 后端生成accessToken的过程通常是为了实现用户认证和授权功能生成accessToken常见的方式 1用户登录用户在前端提供用户名和密码进行登录 2后端验证后端接收到用户的登录请求后会验证用户提供的用户名和密码是否正确 3生成accessToken如果验证用户名和密码等均正确通过后端会生成一个唯一的accessToken并将其与用户信息关联起来accessToken可以是一个随机字符串或使用加密算法生成的token 4返回accessToken后端将生成的accessToken返回给前端前端可以将其保存在本地以便后续的请求中使用 5鉴权前端在后续的请求中携带accessToken后端会对accessToken进行验证以确定请求是否来自己经登录过的用户。 2.3 后端生成accessToken具体实现 3、后端返回给前端accessToken 4、后端验证accessToken 后端生成accessToken 后端返回给前端accessToken 后端验证accessToken 5、注意点 1accessToken的有效性accessToken通常具有一定的有效期限制以确保安全性一旦accessToken过期客户端需要重新进行身份验证并获取新的accessToken 2确保accessToken安全性可使用加密算法HMAC-SHA256将用户身份信息和必要信息过期时间和权限与一个密钥进行加密 问题 什么是过期时间权限如何使用用户登录信息过期时间权限生成accessToken生成的accessToken保存到哪里前端和后端都要保存吗 redis中保存到数据库如何保存保存后用户再次发起请求如何验证 返回给前端、后端保留到redis从redis中获取并进行验证如何验证过期时间前端传过来的accessToken是什么样的 6、实现生成token并保存到redis具体代码 6.1 依赖 !-- redis 缓存操作:提供了一些自动配置和默认的Redis连接工厂 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- JWT依赖--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency6.2 生成token的工具类 package com.XXXX.util;import com.alibaba.fastjson.JSONObject;import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.util.Base64;/*** 生成accessToken(用户id登录用户名角色)*/ public class TokenUtil {private static final String ALGORITHM HmacSHA256;private static final String SECRET_KEY cccccc;public static String generateAccessToken(Integer id,String username, String roleName) {try {// 创建一个随机的密钥byte[] secretKeyBytes SECRET_KEY.getBytes(StandardCharsets.UTF_8);SecretKeySpec secretKeySpec new SecretKeySpec(secretKeyBytes, ALGORITHM);// 创建JSON对象JSONObject json new JSONObject();json.put(id,id);json.put(username, username);json.put(role, roleName);// 将JSON对象转换为字符串String jsonString json.toString();// 使用密钥对字符串进行加密Mac hmacSha256 Mac.getInstance(ALGORITHM);hmacSha256.init(secretKeySpec);byte[] encryptedBytes hmacSha256.doFinal(jsonString.getBytes(StandardCharsets.UTF_8));// 将加密后的字节数组进行Base64编码String accessToken Base64.getEncoder().encodeToString(encryptedBytes);return accessToken;} catch (Exception e) {e.printStackTrace();}return null;} }6.3 redis相关工具 package com.XXXX.util.redis;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;Configuration public class RedisConfig {Beanpublic RedisTemplateString,Object redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplateString, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());return redisTemplate;} }6.4 生成token并保存到redis /*** 生成token并保存到redis中** param manager* return*/PostMapping(/access)ResponseBodypublic R accessToken(RequestBody Manager manager) {String id String.valueOf(manager.getId());long expireTimeInSeconds 10; //设置时效秒为单位 // 1.生成accessTokenString s TokenUtil.generateAccessToken(manager.getId(), manager.getUsername(), manager.getRoleName()); // 2.存入accessTokenredisTemplate.opsForValue().set(id, s, expireTimeInSeconds, TimeUnit.SECONDS);Object o redisTemplate.opsForValue().get(id);System.out.println(redis: o);logger.info(s.toString());System.out.println(token: s);return R.ok(成功);}/*** 验证redis中的数据的时效性** param manager* return*/PostMapping(/redisTime)ResponseBodypublic R timeToken(RequestBody Manager manager) {String id String.valueOf(manager.getId());Object o redisTemplate.opsForValue().get(id);System.out.println(验证时效 o);return R.ok(o);}
http://www.zqtcl.cn/news/200481/

相关文章:

  • 专业的广州微网站建设移动应用开发干什么的
  • 网站运营有什么用常熟智能网站开发
  • 如何组建做网站的团队绍兴网站建设推广
  • 资讯类响应式网站模板深圳网站建设培训机构
  • 电子商务网站功能设计3d动画制作过程
  • 随机网站生成器win7asp+sql server 2008做网站
  • 金本网站建设设计江苏建筑业网
  • 校园网站建设的作用淄博网站建设网站推广优化
  • 域名过期了怎么办怎么找回网站校友录网站开发设计
  • 医疗 企业 网站建设seo网络优化是什么工作
  • e时代速递搜索引擎网站建设aso关键词搜索优化
  • 产品单页营销型网站模板龙华网站建设深圳信科
  • 建网站平台要多少钱投资公司取名字大全
  • 建设网站需要哪些设备重庆本地建站
  • 学做家常菜去那个网站专业制作网站制作
  • 合肥网站建设公网站程序如何上传
  • 潍坊网站建设招聘官方网站建设 在线磐石网络
  • 校友网站建设开一个网站的流程
  • 商业门户网站是什么意思哪家培训机构学校好
  • 青岛企业网站制作seo排名优化培训网站
  • 2018做网站还是app上海搜索seo
  • 网站建设用模板好吗罗湖网站制作费用
  • 网站图片延时加载app推广视频
  • 郑州设计师网站个人搭建网站要多少钱
  • 网站制作成品下载wordpress怎么更改样式
  • 河北省城乡和建设厅网站首页网站维护属于什么部门
  • 西安建网站公司哪家好网站导航条设计欣赏
  • 张家港网站网络优化济南网站建设0531soso
  • 关于网站的建设深圳搜索优化排名
  • 网站建设的布局建设通破解vip