小编Mat*_*att的帖子

services.AddIdentity 导致我的控制器端点响应 404

在向我的应用程序添加新的承载身份验证方面,我遇到了一些困难,我无法弄清楚,我需要的一段代码导致我的端点返回 404 错误,但删除后我能够成功访问没有 404 错误的端点,请参见下文。

首先,我的应用程序既充当身份服务器,又充当接受不记名令牌的 API。

        services.AddAuthentication("Bearer")
            .AddJwtBearer("Bearer", options =>
            {
                options.Authority = "https://www.example.com/";
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateAudience = false
                };
            });

        services.AddAuthorization(options =>
        {
            options.AddPolicy("ApiScope", policy =>
            {
                policy.RequireAuthenticatedUser();
                policy.RequireClaim("scope", "openid");
            });
        });

        // THIS IS THE CODE CAUSING THE 404 ERROR
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<DevContext>();
Run Code Online (Sandbox Code Playgroud)

从上面来看,如果我尝试到达使用 [Authorize] 装饰的控制器端点,那么我会看到 404 响应。如果我注释掉最后几行(请参阅代码中的注释),那么我就能够成功到达我的端点。

为什么我会收到 404 错误?我认为这一定是因为 .AddIdentity 正在覆盖承载身份验证,并且因为我的控制器用 [Authorize] 装饰,所以我无法访问它?

难道我的应用程序不能同时作为 API 和身份服务器吗?


这是当有问题的代码被取消注释时(404 响应)我在输出日志中看到的内容:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2.0 GET https://localhost:44310/api
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService: Information: Authorization failed.
Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler: Information: AuthenticationScheme: …
Run Code Online (Sandbox Code Playgroud)

identity asp.net-core

2
推荐指数
1
解决办法
868
查看次数

什么是Guid.NewGuid()在LINQ to Entities中做什么?

我有一个LINQ to Entities编写,它正在使用以下OrderBy:

.OrderBy(i => Guid.NewGuid())
Run Code Online (Sandbox Code Playgroud)

上面随机化了数据集的顺序,因此每次运行此代码时都会产生不同的顺序.

但是,如果我执行以下任何操作,则数据集不是随机的,并且是所有3个OrderBy的完全相同,请参见下文:

.OrderBy(i => new Guid("5fd3e5e7-b172-42f5-a4dd-da4212201a31"))
.OrderBy(i => new Guid("beb7345c-1421-48e0-b177-51b2bb065214"))

Guid g = Guid.NewGuid();
.OrderBy(i => g)
Run Code Online (Sandbox Code Playgroud)

您可以看到上面的3个OrderBy正在使用不同的Guid,那么为什么它们会生成相同的订单呢?为什么每次运行这段代码时Guid.NewGuid()都会将列表随机化,但是其他3个OrderBy语句每次产生相同的结果?

我的问题是,我需要将一个值传递给一个函数,该函数在LINQ to Entities数据集中用于根据值随机化结果,但是我还需要能够传递相同的值并检索相同的顺序随机性.

谢谢.

c# linq entity-framework

1
推荐指数
3
解决办法
1643
查看次数

标签 统计

asp.net-core ×1

c# ×1

entity-framework ×1

identity ×1

linq ×1