小编Mos*_*zek的帖子

如何仅在扩展授予类型中添加自定义声明

我想在我的扩展授权类型中添加自定义声明.并且我的代码类似于我的类中实现IExtensionGrantValidator的以下内容,但是由此产生的令牌不包含添加的custome_claim

        public async Task ValidateAsync(ExtensionGrantValidationContext context)
        {
        var userToken = context.Request.Raw.Get("token");

        if (string.IsNullOrEmpty(userToken))
        {
            context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant);
            return;
        }

        var result = await _validator.ValidateAccessTokenAsync(userToken);
        if (result.IsError)
        {
            context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant);
            return;
        }

        var sub = result.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;

        context.Result = new GrantValidationResult(sub, "graph_delegation", new List<Claim> { new Claim("custome_claim", "Hello from the custom grant") });
    }
Run Code Online (Sandbox Code Playgroud)

asp.net-core identityserver4

7
推荐指数
1
解决办法
395
查看次数

ASP.NET MVC 应用程序如何严重依赖 System.Web 程序集?

我读过很多关于 OWIN 和 Katana 的文章,在 ASP.NET 应用程序中使用 OWIN 的好处之一是,在构建 ASP.NET 应用程序时,由于对 System.Web 的严重依赖,我天生就绑定到 IIS集会。换句话说,System.Web 程序集默认在每个请求上运行。

实际上,我不明白 System.Web 如何在每个请求上运行,从而消耗资源并使 ASP.NET 应用程序总体上变慢很多。中间件组件是如何解决这个问题的?他们不依赖于 System.Web 程序集吗?

asp.net asp.net-mvc owin katana

5
推荐指数
1
解决办法
497
查看次数

为什么AsEnumerable还在服务器上执行过滤器

我在我的程序中使用Linq to Entities,我有以下两个简单的查询:

var result = dbContext.Customers.Where(c => c.Name == "Mostafa").ToList();
var result2 = dbContext.Customers.Where(c => c.Name == "Mostafa").AsEnumerable().ToList();
Run Code Online (Sandbox Code Playgroud)

当我运行SQL事件探查器时,我发现生成的SQL查询对于两个查询都是相同的!问题是为什么在第二个查询中,虽然我使用asEnumerable,在服务器端执行过滤?

更新:更改第二个查询时,过滤应用于内存而不是服务器:

var result2 = dbContext.Customers.AsEnumerable().Where(c => c.Name == "Mostafa").ToList();
Run Code Online (Sandbox Code Playgroud)

感谢@Willem Van Onsem

c# linq-to-entities

-1
推荐指数
1
解决办法
109
查看次数