C# 身份验证票证中的ASP.Net核心自定义数据

C# 身份验证票证中的ASP.Net核心自定义数据,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,ASP.Net core中保存自定义身份验证票证的最佳做法是什么? 换句话说,如何在MVC 6方面实现以下目标: publicstaticvoidsign(字符串用户名、bool持久性、长帐号ID) { const int version=1; DateTime issue=DateTime.Now; DateTime到期=发行。添加月份(1); 字符串数据=accountId.ToString(); FormsAuthenticationTicket票证=新的FormsAuthenticati

ASP.Net core中保存自定义身份验证票证的最佳做法是什么?
换句话说,如何在MVC 6方面实现以下目标:

publicstaticvoidsign(字符串用户名、bool持久性、长帐号ID)
{
const int version=1;
DateTime issue=DateTime.Now;
DateTime到期=发行。添加月份(1);
字符串数据=accountId.ToString();
FormsAuthenticationTicket票证=新的FormsAuthenticationTicket(版本、用户名、发行、到期、持久、数据);
HttpCookie cookie=新的HttpCookie(FormsAuthentication.FormScookeName,FormsAuthentication.Encrypt(票证));
if(persistent==true)
cookie.Expires=到期;
HttpContext.Current.Response.Cookies.Add(cookie);
}
在使用IAApplicationBuilder应用程序配置方法的启动类中:

application.CustomCookieAuthentication(登录);
它需要根据您自己的代码进行一些调整。根据您的设置,某些类方法也应该由您自己的方法替换。但在共同的解决方案中,我认为很明显:

公共静态IAApplicationBuilder CustomCookieAuthentication(此IAApplicationBuilder应用程序,字符串url)
{
if(应用程序==null)
抛出新ArgumentNullException(nameof(application));
如果(url==null)
抛出新ArgumentNullException(nameof(url));
IAApplicationBuilder chain=application.UseCookieAuthentication(新的CookieAuthenticationOptions
{
CookieName=SecurityExtensions.CookieName,
CookieHttpOnly=true,
CookieSecure=Configuration.Authentication.Cookie.Secure,
ExpireTimeSpan=时间跨度从天(30),
slidengexpiration=true,
自动验证=真,
自动挑战=正确,
LoginPath=新路径字符串(url),
AccessDeniedPath=新路径字符串(url)
});
返回链;
}
公共静态异步任务登录(此HttpContext上下文、字符串用户名、唯一帐户ID、bool持久)
{
等待上下文。注销();
索赔id=新索赔(ClaimTypes.UserData,accountId.ToString());
索赔版本=新索赔(ClaimTypes.version,SecurityExtensions.version.ToString());
ClaimsPrincipal principal=newclaimsprincipal(newclaimsidentity(new[]{id,version},SecurityExtensions.CookieName));
DateTime utc=DateTime.UtcNow;
AuthenticationProperties=新的AuthenticationProperties();
properties.IssuedUtc=utc;
properties.IsPersistent=持久性;
if(persistent==true)
properties.ExpiresUtc=utc.AddYears(1);
wait context.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,主体,属性);
}
公共静态异步任务注销(此HttpContext上下文)
{
wait context.Authentication.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
ISession session=SecurityExtensions.GetSession(上下文);
会话?.Clear();
}
在使用IAApplicationBuilder应用程序配置方法的启动类中:

application.CustomCookieAuthentication(登录);
它需要根据您自己的代码进行一些调整。根据您的设置,某些类方法也应该由您自己的方法替换。但在共同的解决方案中,我认为很明显:

公共静态IAApplicationBuilder CustomCookieAuthentication(此IAApplicationBuilder应用程序,字符串url)
{
if(应用程序==null)
抛出新ArgumentNullException(nameof(application));
如果(url==null)
抛出新ArgumentNullException(nameof(url));
IAApplicationBuilder chain=application.UseCookieAuthentication(新的CookieAuthenticationOptions
{
CookieName=SecurityExtensions.CookieName,
CookieHttpOnly=true,
CookieSecure=Configuration.Authentication.Cookie.Secure,
ExpireTimeSpan=时间跨度从天(30),
slidengexpiration=true,
自动验证=真,
自动挑战=正确,
LoginPath=新路径字符串(url),
AccessDeniedPath=新路径字符串(url)
});
返回链;
}
公共静态异步任务登录(此HttpContext上下文、字符串用户名、唯一帐户ID、bool持久)
{
等待上下文。注销();
索赔id=新索赔(ClaimTypes.UserData,accountId.ToString());
索赔版本=新索赔(ClaimTypes.version,SecurityExtensions.version.ToString());
ClaimsPrincipal principal=newclaimsprincipal(newclaimsidentity(new[]{id,version},SecurityExtensions.CookieName));
DateTime utc=DateTime.UtcNow;
AuthenticationProperties=新的AuthenticationProperties();
properties.IssuedUtc=utc;
properties.IsPersistent=持久性;
if(persistent==true)
properties.ExpiresUtc=utc.AddYears(1);
wait context.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,主体,属性);
}
公共静态异步任务注销(此HttpContext上下文)
{
wait context.Authentication.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
ISession session=SecurityExtensions.GetSession(上下文);
会话?.Clear();
}
看一看看