JWT 持有者不断返回 401 状态 = 持有者错误 = "invalid_token" , error_description= "The signature is invalid"



大家好,已经6个小时了,我正在努力解决这个问题。

我有以下项目:

  • Client App: ReactJS using axios library
  • Server App: . net Core Web api实现JWT授权和认证。

问题:

  • 当尝试使用axios从我的react应用程序发送get请求到后端并在头中附加jwt时,我总是得到401未经授权。
  • 我尝试了同样的方式使用邮差它工作完美!!!!!!!!!!

我的尝试:

  • 我尝试将cors添加到我的api中,并允许每个origin,每个header,每个方法仍然不起作用。

使用axios从ReactJS发送请求:

async function getAllUserTasks() {
    try {
      return axios({
        method: "get",
        url: "http://localhost:5133/todo/ToDos",
        headers: {
          Authorization: `Bearer ${localStorage.getItem("jwtToken")}`,
        },
        body: {
          userId: JSON.stringify('924BF80F-F394-4927-8DCC-A7B67AFA663C')
        },
        
      });
    } catch (error) {
      console.log(error);
    }
  }
  //call the function one time
  useEffect(() => {
    getAllUserTasks();
  }, []);

.NET应用中JWT的配置:

services.AddAuthentication(defaultScheme: JwtBearerDefaults.AuthenticationScheme)
                    .AddJwtBearer(options => options.TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        ValidIssuer = jwtSettings.Issuer,
                        ValidAudience = jwtSettings.Audience,
                        IssuerSigningKey = new SymmetricSecurityKey(
                            Encoding.UTF8.GetBytes(jwtSettings.Secret))
                    });

我的策略和cors配置:

services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
                {
                    builder.WithOrigins("http://localhost:3000", "http://localhost:3000/")
                           .AllowAnyMethod()
                           .AllowAnyHeader();
                }));

这真是令人沮丧!

尝试post请求,并从请求定义之外的本地存储获取令牌。我想其中一个可以解决你的问题。

相关内容

最新更新