System.Web.Security.FormsAuthenticationTicket 的 AspNetCore 替代方案
AspNetCore alternative for System.Web.Security.FormsAuthenticationTicket
我们正在使用 System.Web.Security.FormsAuthenticationTicket 为未登录的用户创建匿名 cookie。AspNetCore 中是否有等效项?
我很清楚 ASP.NET Core 不支持表单身份验证。新的做事方式是 cookie。那么如何创建一个在新情况下具有相同功能的 cookie?
Asp.net核心不支持表单认证。我建议您使用基于 cookie 的身份验证。 link 可以帮助您构建它。
如果您想跳过需要授权访问的方法。您可以添加属性 [AllowAnonymous]
.
[AllowAnonymous]
public IActionResult Privacy()
{
return View();
}
或者你可以参考这个。
在 Startup.cs 中配置 cookie。
services.AddAuthentication("auth")
.AddCookie("auth",config=>
{
config.Cookie.Name = "cookie.name";
config.LoginPath = "/home/login";
});
在此操作中生成令牌。您可以通过接收表格数据来填写索赔。
[HttpPost]
public IActionResult login()
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name,"myName"),
new Claim(ClaimTypes.Role,"myRole")
};
var claimIdentity = new ClaimsIdentity(claims,"id card");
var claimPrinciple = new ClaimsPrincipal(claimIdentity);
var authenticationProperty = new AuthenticationProperties
{
IsPersistent = true
};
HttpContext.SignInAsync(claimPrinciple,authenticationProperty);
return View();
}
我们正在使用 System.Web.Security.FormsAuthenticationTicket 为未登录的用户创建匿名 cookie。AspNetCore 中是否有等效项? 我很清楚 ASP.NET Core 不支持表单身份验证。新的做事方式是 cookie。那么如何创建一个在新情况下具有相同功能的 cookie?
Asp.net核心不支持表单认证。我建议您使用基于 cookie 的身份验证。 link 可以帮助您构建它。
如果您想跳过需要授权访问的方法。您可以添加属性 [AllowAnonymous]
.
[AllowAnonymous]
public IActionResult Privacy()
{
return View();
}
或者你可以参考这个
在 Startup.cs 中配置 cookie。
services.AddAuthentication("auth")
.AddCookie("auth",config=>
{
config.Cookie.Name = "cookie.name";
config.LoginPath = "/home/login";
});
在此操作中生成令牌。您可以通过接收表格数据来填写索赔。
[HttpPost]
public IActionResult login()
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name,"myName"),
new Claim(ClaimTypes.Role,"myRole")
};
var claimIdentity = new ClaimsIdentity(claims,"id card");
var claimPrinciple = new ClaimsPrincipal(claimIdentity);
var authenticationProperty = new AuthenticationProperties
{
IsPersistent = true
};
HttpContext.SignInAsync(claimPrinciple,authenticationProperty);
return View();
}