相关疑难解决方法(0)

ASP.NET Core - 使用 Windows 身份验证进行授权

我已经将我的 web api 配置为使用 windows 身份验证。我的目标本质上是根据用户 Windows 帐户限制控制器中的某些操作。有些将能够执行读取操作,而其他将能够执行将写入基础数据库的操作。我找到了大量关于如何设置基于声明的授权的文档,这是我认为我需要走的路线。我还没有发现如何使用 windows auth 进行设置。我想我错过了中间步骤,例如将 Windows 身份验证注册为身份提供者?

启动文件

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddAuthentication(IISDefaults.AuthenticationScheme);

    services.AddAuthorization(options =>
    {
        options.AddPolicy("readOnly", policy =>
                          policy.RequireClaim(`???????????????????????`));
        options.AddPolicy("write", policy =>
                          policy.RequireClaim(`???????????????????????`));
    });
}
Run Code Online (Sandbox Code Playgroud)

控制器

[Authorize(Policy = "ReadOnly")]
public class MyController : Controller
{
    public ActionResult SomeReadOnlyAction()
    {
        //Return data from database
    }

    [Authorize(Policy = "Write")]
    public ActionResult AWriteAction()
    {
        //Create/Update/Delete data from database
    }
}
Run Code Online (Sandbox Code Playgroud)

我想问这个问题的另一种方法是如何使用 Windows 身份验证配置或访问声明/角色等。

c# iis authorization windows-authentication asp.net-core

10
推荐指数
1
解决办法
9422
查看次数

对某些控制器使用中间件

在我的 ASP Net Core 应用程序中,我需要仅为特定控制器应用自定义中间件。

我找到了这个例子

app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
    app.UseMiddleware();
});

Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

如何检查请求路径是否包含特定路径而不是开头?

c# middleware asp.net-core-3.1

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