gpt4 book ai didi

c# - ASP.Net core 2.0 Web API 中的 Cookie 身份验证

转载 作者:行者123 更新时间:2023-11-30 15:16:55 25 4
gpt4 key购买 nike

我正在尝试在 ASP.Net Core 2.0 Web API 中使用基于 cookie 的身份验证,并尝试使用以下代码激活它。登录页面托管在与托管应用程序的域不同的域中。我已经向 Controller 添加了 [Authorize] 属性。

在启动时,我可以看到在调试器中调用的服务代码。

我的期望是,当我的 Web 客户端使用 Web API 服务时,中间件会检测到 header 没有 cookie,并将客户端重定向到登录页面。但是我可以自由调用 Controller 。

    public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddPolicy("AllowAll",
builder => builder.SetIsOriginAllowed(s => true)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()));

services.TryAddTransient<CorsAuthorizationFilter, CorsAuthorizationFilter>();

services.AddSwaggerGen(c =>
{
c.OperationFilter<FileOperationFilter>();
c.SwaggerDoc("v1", new Info
{
Title = "Collateral Management API",
Version = "v1"
});
});

services.AddMvcCore(options =>
{

options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAll"));
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.AddApiExplorer()
.AddJsonFormatters(s => s.NullValueHandling = NullValueHandling.Ignore);

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(auth =>
{
auth.Cookie.Domain = "xxx.com";
auth.Cookie.Name = "xxx";
auth.LoginPath = "/signin";
auth.AccessDeniedPath = "/signin";
});

services.AddAuthorization(auth =>
{
auth.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
});
//...
}

及以后......

app.UseAuthentication()

最佳答案

尝试添加:

services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
});

services.AddMvc() 之后

编辑

鉴于您添加 MVC 的方式,您可以尝试:

// requires: using Microsoft.AspNetCore.Authorization;
// using Microsoft.AspNetCore.Mvc.Authorization;
services.AddMvcCore(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});

AddMvcCore 默认不添加授权服务。您还需要执行 AddMvcCore(...).AddAuthorization()

关于c# - ASP.Net core 2.0 Web API 中的 Cookie 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com