【问题标题】:Blazor Authentication - Refresh Token for JWT tokenBlazor 身份验证 - 刷新 JWT 令牌的令牌
【发布时间】:2020-07-07 04:08:10
【问题描述】:

我的身份验证基于这个 git hub 存储库。

https://github.com/chrissainty/AuthenticationWithClientSideBlazor

我只是想知道是否有人对如何实现刷新令牌有任何建议,因为目前我尝试的一切都失败了。

blazor 什么时候重新检查身份验证,因为我收集到的只是它检查负载,所以当我的令牌在仍然登录的情况下过期时,我会收到未经授权的 http 错误。我不想让用户注销以重新进行身份验证。

这是一个 Blazor Web 程序集应用程序。

任何建议将不胜感激!

【问题讨论】:

    标签: c# authentication web jwt blazor-client-side


    【解决方案1】:

    大体思路是:

    服务器:

    1. 在登录期间生成刷新令牌 你可以选择任何你想要的方法。为简单起见,只需生成随机字符集,例如:
    private string GenerateRefreshToken()
    {
        Random random = new Random();
        byte[] baseBytes = new byte[128];
        random.NextBytes(baseBytes);
        return Convert.ToBase64String(baseBytes);
    }
    
    1. 将其与到期日期(如 2 周)一起存储并提供给用户
    2. 扩展 LoginController.Login 以返回两个令牌而不是一个
    3. 向 LoginController 添加新端点(或扩展现有端点)- LoginUsingRefreshToken

    在这里,您使用刷新令牌再次登录您的用户。因为您存储了刷新令牌,所以您确切地知道哪个用户想要再次登录。延长(或不延长,选择您的方法)此特定刷新令牌的到期日期。


    客户:

    1. 像存储“常规”令牌一样存储刷新令牌
     await _localStorage.SetItemAsync("refreshToken", loginResult.RefreshToken);
    
    1. 检查常规令牌是否过期。您可以通过多种方式做到这一点:

      在每次请求之前反序列化令牌并检查到期日期 动态行动:当你从服务器收到 401 时 设置计时器以在令牌过期之前重新登录 或者选择别的东西

    2. 使用刷新令牌和新创建的端点重新登录

    【讨论】:

      猜你喜欢
      • 2019-02-27
      • 1970-01-01
      • 2017-12-29
      • 2017-11-08
      • 2021-09-17
      • 2021-09-25
      • 2017-10-22
      • 1970-01-01
      • 2019-08-30
      相关资源
      最近更新 更多