Мне нужно аутентифицировать пользователя из Identity Provider, используя OpenID connect после успешной аутентификации. Мне нужно сохранить заявки пользователя в куки.
Но я не нахожу метод добавления в Request.Cookies, который занимает триаргументы, я могу только передать keyvaluepair в качестве аргумента signle.
Вот мой код
public IActionResult Login(string provider, string returnUrl = null)
{
Challenge(new AuthenticationProperties { RedirectUri = returnUrl ?? "/" }, provider);
Request.Cookies.Append("key", "value", new CookieOptions());
return View();
}
Мне также нужно подтвердить, что я должен написать код для хранилища COOKIE, чтобы он мог 'не может быть сохранен снова после успешной аутентификации.
Вот мой код для аутентификации
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddOpenIdConnect(options =>
{
options.Authority = "https://accounts.google.com";
options.ClientId = _clientID;
options.ResponseType = "code id_token";
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.SaveTokens = true;
options.ClientSecret = _clientSecret;
//options.GetClaimsFromUserInfoEndpoint = true;
options.CallbackPath = "/home/index";
//options.SignedOutRedirectUri = redirectUrl;
options.Events = new OpenIdConnectEvents()
{
// handle the logout redirection
OnRedirectToIdentityProviderForSignOut = context =>
{
context.Response.Redirect(redirectUrl);
context.HandleResponse();
return Task.CompletedTask;
}
};
}).AddCookie(options => {
options.LoginPath = "/auth/signin";
});
заранее спасибо.