In Startup-Klasse in configure-Methode IApplicationBuilder Anwendung:
application.CustomCookieAuthentication(login);
Es erfordert einige Anpassungen je nach Ihrem eigenen Code
Mit anderen Worten, wie die folgenden in Bezug auf den MVC 6 zu erreichen, . Einige Klassenmethoden sollten abhängig von Ihrer Konfiguration auch durch Ihre eigenen ersetzt werden. Aber im allgemeinen Lösung ist klar, denke ich:
public static IApplicationBuilder CustomCookieAuthentication(this IApplicationBuilder application, string url)
{
if (application == null)
throw new ArgumentNullException(nameof(application));
if (url == null)
throw new ArgumentNullException(nameof(url));
IApplicationBuilder chain = application.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = SecurityExtensions.CookieName,
CookieHttpOnly = true,
CookieSecure = Configuration.Authentication.Cookie.Secure,
ExpireTimeSpan = TimeSpan.FromDays(30),
SlidingExpiration = true,
AutomaticAuthenticate = true,
AutomaticChallenge = true,
LoginPath = new PathString(url),
AccessDeniedPath = new PathString(url)
});
return chain;
}
public static async Task Login(this HttpContext context, string username, Unique accountId, bool persistent)
{
await context.Logout();
Claim id = new Claim(ClaimTypes.UserData, accountId.ToString());
Claim version = new Claim(ClaimTypes.Version, SecurityExtensions.Version.ToString());
ClaimsPrincipal principal = new ClaimsPrincipal(new ClaimsIdentity(new[] { id, version }, SecurityExtensions.CookieName));
DateTime utc = DateTime.UtcNow;
AuthenticationProperties properties = new AuthenticationProperties();
properties.IssuedUtc = utc;
properties.IsPersistent = persistent;
if (persistent == true)
properties.ExpiresUtc = utc.AddYears(1);
await context.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, properties);
}
public static async Task Logout(this HttpContext context)
{
await context.Authentication.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
ISession session = SecurityExtensions.GetSession(context);
session?.Clear();
}
Werfen Sie einen Blick auf https://docs.asp.net/en/latest/security/authentication/cookie.html –