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

dede免费手机网站模板c 网站开发 视频

dede免费手机网站模板,c 网站开发 视频,自己做的网站如何上百度,企业网站开发所需要的模块在 Web 应用开发中#xff0c;用户登录状态的管理至关重要。为了避免用户频繁遇到登录过期的问题#xff0c;我们可以通过实现 JWT#xff08;JSON Web Token#xff09;刷新机制来提升用户体验 推荐: 使用 Refresh Token#xff08;双 Token 机制#xff09; 1. 生成和…在 Web 应用开发中用户登录状态的管理至关重要。为了避免用户频繁遇到登录过期的问题我们可以通过实现 JWTJSON Web Token刷新机制来提升用户体验 推荐: 使用 Refresh Token双 Token 机制 1. 生成和使用双 Token 通常会生成两种 Token访问 Token (Access Token) 和 刷新 Token (Refresh Token)。 • 访问 Token用于客户端与服务器之间的身份验证有效期较短例如 30 分钟以提高安全性。 • 刷新 Token用于获取新的访问 Token有效期较长例如 7 天存储在客户端 。 Tokenservice.cs // 生成 JWT Access Token 和 Refresh Token public (string AccessToken, string RefreshToken) GenerateTokens(string userId, string userName) {var tokenHandler  new JwtSecurityTokenHandler();var key Encoding.ASCII.GetBytes(_configuration[JwtSettings:Secret]);// 生成 Access Tokenvar accessTokenDescriptor  new SecurityTokenDescriptor{Subject  new ClaimsIdentity(new Claim[]{new Claim(ClaimTypes.NameIdentifier, userId),new Claim(ClaimTypes.Name, userName)}),Issuer _configuration[JwtSettings:Issuer],Audience _configuration[JwtSettings:Audience],Expires DateTime.UtcNow.AddMinutes(double.Parse(_configuration[JwtSettings:ExpireMinutes])),SigningCredentials  new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)};var accessToken tokenHandler.CreateToken(accessTokenDescriptor);// 生成 Refresh Tokenvar refreshTokenDescriptor  new SecurityTokenDescriptor{Subject  new ClaimsIdentity(new Claim[]{new Claim(ClaimTypes.NameIdentifier, userId)}),Issuer _configuration[JwtSettings:Issuer],Audience _configuration[JwtSettings:Audience],Expires DateTime.UtcNow.AddDays(7), // Refresh Token 有效期 7 天SigningCredentials  new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)};var refreshToken tokenHandler.CreateToken(refreshTokenDescriptor);return (tokenHandler.WriteToken(accessToken), tokenHandler.WriteToken(refreshToken)); }// 根据旧 JWT 令牌换取新 JWT 令牌public string ExchangeJwtToken(string oldToken){if (!ValidateJwtToken(oldToken)){thrownew InvalidOperationException(Invalid or expired token);}var principal ParseJwtToken(oldToken);var userId principal.FindFirst(ClaimTypes.NameIdentifier)?.Value;var userName principal.FindFirst(ClaimTypes.Name)?.Value;if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(userName)){thrownew InvalidOperationException(Invalid token claims);}return GenerateJwtToken(userId, userName);} AuthController.cs private readonly TokenService _tokenService; privatereadonly IAppUser _appUser;public AuthController(IConfiguration configuration, IAppUser appUser, TokenService tokenService) {_tokenService tokenService;_appUser appUser; }[HttpPost(login)] [AllowAnonymous] public IActionResult Login([FromBody] LoginRequest loginRequest) {var token _tokenService.GenerateTokens(loginRequest.Username, loginRequest.Username);return Ok(new { token.RefreshToken,token.AccessToken }); } 2. 前端请求拦截器自动刷新 Token 在前端应用中可以使用请求拦截器来自动处理 Token 刷新逻辑。当访问 Token 过期时拦截器会自动调用刷新接口获取新的访问 Token并重新发起请求 //  请求拦截器 axios.interceptors.request.use( config  {const token  localStorage.getItem(accessToken);if (token) {config.headers[Authorization]  Bearer ${token};}return config;}, error  {returnPromise.reject(error);} );axios.interceptors.response.use( response  response, async error {const originalRequest error.config;if (error.response.status  401  !originalRequest._retry) {originalRequest._retry  true;const refreshToken  localStorage.getItem(refreshToken);const res  await axios.post(/api/auth/refresh-token, { refreshToken });localStorage.setItem(accessToken, res.data.accessToken);returnaxios(originalRequest);}returnPromise.reject(error);} ); 3. 后端提供刷新 Token 的接口 专门的接口来处理刷新 Token 的请求。该接口会验证刷新 Token 的有效性并返回新的访问 Token // 刷新 Access Token [HttpPost(refresh)] public IActionResult RefreshToken([FromBody] RefreshTokenRequest request) {try{var validatetoken _tokenService.ValidateJwtToken(request.RefreshToken);if (validatetoken){return Ok(_tokenService.ExchangeJwtToken(request.RefreshToken));}return Unauthorized(Invalid refresh token);}catch (Exception ex){return Unauthorized(Invalid refresh token);} } 不推荐中间件自动刷新Token 1. 创建中间件创建一个中间件用于检查每个请求的JWT Token过期时间。 2. 读取Token中间件读取请求头中的Authorization字段获取JWT Token。 3. 检查过期时间判断Token的过期时间如果距离过期时间在一定范围内如30分钟内则生成一个新的JWT Token并通过自定义的响应头如X-Refresh-Token返回给客户端。 4. 客户端更新Token客户端检查响应头如果存在X-Refresh-Token则用新Token替换旧Token并在后续请求中使用新Token。 5. 弊端虽然实现起来相对简单但安全性相对较低因为Token的刷新是在客户端自动进行的如果Token被盗用攻击者可能会在Token过期前一直使用该Token 因为存在上述弊端不推荐使用中间件自动刷新 Token故不提供相关代码实现。
http://www.hkea.cn/news/14587983/

相关文章:

  • 假淘宝网站怎么做百度关键词竞价价格
  • 一般网站空间要多大网站的建设服务器
  • 工商工事上哪个网站做程序员接私活平台
  • vs2013如何做网站域名查询阿里云
  • 老网站怎么优化揭阳手机网站建设
  • 慈溪网站开发我做网站如何分流客户
  • 网站开发公司 上海百度一下打开
  • 司法局网站建设自己免费制作app
  • 动态电子商务网站 制作机械类 网站源码
  • 建立网站用英语怎么说中国央企100强排名
  • 网站建设相关的吴忠网站设计公司
  • 自己做的网站 jen苏州市市政建设集团公司网站
  • 国外高清视频素材网站推荐虚拟主机代理商的网站打不开了怎么办
  • 怎么接网站开发外包百度做推广一般要多少钱
  • 湖南网站建设找拉米拉wordpress 捐赠
  • 网站备案信息查询接口宜昌便宜做网站
  • 中国城乡建设经济研究所 网站北京模板建站设计
  • 东莞英文网站制作wordpress主题框架开发
  • 有域名 有主机 怎么建设网站镇江vi设计
  • app要有网站做基础知识搜索引擎在线
  • 西安网站制作排名wordpress书籍模板
  • 曲靖网站建设dodoco高档网站模板
  • html5网站开发价格扁平化设计个人网站
  • 网站建设项目需求概要说明书建筑人才招聘信息网
  • 吃的网站要怎么做德州住房和城乡建设局网站
  • 河北项目建设备案网站网站名称怎么变更
  • 企业网站设计怎么做想学做电商怎么加入
  • 网站集群建设和网站集约化网页设计视频
  • 营销型网站建设应该考虑哪些因素企业网站设计哪家好
  • 张槎手机网站建设网站建设购销合同