我已经使用dotnet core 2.0设置了身份验证,如下所示:
1)在startup.cs中将app.UseAuthentication();
添加到Configure(..)
2)添加到ConfigureServices(..)
startup.cs
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
options.ClientId = Configuration["auth:google:clientid"];
options.ClientSecret = Configuration["auth:google:clientsecret"];
});
如果我在我的web-api控制器上删除[授权]属性,它将挑战我谷歌,我选择一个帐户,它永远循环。
我找到的修复程序(.net core 2 Google Authentication login loop)是指定AuthenticationScheme,如下所示:
[Authorize(AuthenticationSchemes = GoogleDefaults.AuthenticationScheme)]
或[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
(奇怪的是:to-me:
都适用于这种情况)
但是,当我指定默认方案时,我不确定为什么需要它。
如果默认方案不相关,我可以指定默认方案,因为我不希望每次使用该属性时都指定它。
答案 0 :(得分:0)
只需添加它,它将授权除[AllowAnonymous]以外的所有控制器/方法:
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});