stevenjin 2023-09-18 10:26 采纳率: 98.8%
浏览 5
已结题

asp.net core mvc中jwt过期后重新定向到登陆界面

1.asp.net core mvc中jwt过期后重新定向到登陆界面时,提示重定向次数过多
2.Login是个分部视图

 builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            //JWT有一些默认的属性,就是给鉴权时就可以筛选了
            ValidateIssuer = true,//是否验证Issuer
            ValidateAudience = true,//是否验证Audience
            ValidateLifetime = true,//是否验证失效时间
            ValidateIssuerSigningKey = true,//是否验证SecurityKey
            ValidAudience = tokenOptions.Audience,//
            ValidIssuer = tokenOptions.Issuer,//Issuer,这两项和前面签发jwt的设置一致
            ClockSkew = TimeSpan.FromSeconds(0),//JWT立即失效
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenOptions.SecurityKey))
        };
        #region Events
        options.Events = new JwtBearerEvents()
        {
          
            OnAuthenticationFailed = context =>
            {
                if(context.Exception.GetType() == typeof(SecurityTokenExpiredException))
                {
                    context.Response.Redirect("http://localhost:8080/Login");   //提示重定向次数过多                  
                }
                return Task.CompletedTask;
            },                
        };
        #endregion
    });

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-18 12:50
    关注

    【以下回答由 GPT 生成】

    问题标题: 在 ASP.NET Core MVC 中,当 JWT 过期后重新定向到登陆界面时,提示 "重定向次数过多" ,请问正确的方法应该怎样写呢?

    问题内容: 在 ASP.NET Core MVC 中,我使用 JWT 进行身份验证。我希望在 JWT 过期后自动将用户重定向到登陆界面。但是,我目前的代码在 JWT 过期后执行重定向操作时会出现“重定向次数过多”的错误提示。

    以下是目前的代码:

    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                // JWT 有一些默认的属性,可以用于鉴权时的筛选
                ValidateIssuer = true,    // 是否验证 Issuer
                ValidateAudience = true,  // 是否验证 Audience
                ValidateLifetime = true,  // 是否验证失效时间
                ValidateIssuerSigningKey = true,  // 是否验证 SecurityKey
                ValidAudience = tokenOptions.Audience,
                ValidIssuer = tokenOptions.Issuer,
                ClockSkew = TimeSpan.FromSeconds(0),  // JWT 立即失效
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenOptions.SecurityKey))
            };
    
            // 以下是处理 JWT 过期后的事件
            options.Events = new JwtBearerEvents()
            {
                OnAuthenticationFailed = context =>
                {
                    if(context.Exception.GetType() == typeof(SecurityTokenExpiredException))
                    {
                        context.Response.Redirect("http://localhost:8080/Login");   // 此处会提示 "重定向次数过多"
                    }
                    return Task.CompletedTask;
                },
            };
        });
    

    请优化以上的问题描述和代码片段,并提供解决方案。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 修改了问题 9月18日
  • 修改了问题 9月18日
  • 展开全部

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错