十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关ASP.NET Core 2.0中CookieAuthentication如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为蒲城企业提供专业的成都做网站、网站制作,蒲城网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
在ASP.NET Core 2.0中使用CookieAuthentication跟在1.0中有些不同,需要在ConfigureServices和Configure中分别设置,前者我们叫注册服务,后者我们叫注册中间件
public void ConfigureServices(IServiceCollection services){
services.AddCookieAuthentication();
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
// 因为是后台系统,必须登陆以后才能操作
options.Filters.Add(new AuthorizeFilter(policy));
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
// 使用Authentication中间件
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
在上面的services.AddCookieAuthentication中没有任何参数,系统会为某些属性指定默认值
public static class CookieAuthenticationDefaults
{
///
/// The default value used for CookieAuthenticationOptions.AuthenticationScheme
///
public const string AuthenticationScheme = "Cookies";
///
/// The prefix used to provide a default CookieAuthenticationOptions.CookieName
///
public static readonly string CookiePrefix = ".AspNetCore.";
///
/// The default value used by CookieAuthenticationMiddleware for the
/// CookieAuthenticationOptions.LoginPath
///
public static readonly PathString LoginPath = new PathString("/Account/Login");
///
/// The default value used by CookieAuthenticationMiddleware for the
/// CookieAuthenticationOptions.LogoutPath
///
public static readonly PathString LogoutPath = new PathString("/Account/Logout");
///
/// The default value used by CookieAuthenticationMiddleware for the
/// CookieAuthenticationOptions.AccessDeniedPath
///
public static readonly PathString AccessDeniedPath = new PathString("/Account/AccessDenied");
///
/// The default value of the CookieAuthenticationOptions.ReturnUrlParameter
///
public static readonly string ReturnUrlParameter = "ReturnUrl";
}
根据微软的命名规范在ConfigureServices统一使用Add***,在Configure统一使用Use***
登陆代码
public async Task LoginDo()
{
var user = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, "bob") }, CookieAuthenticationDefaults.AuthenticationScheme));
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user, new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset.Now.Add(TimeSpan.FromDays(180))
});
return Redirect("/");
}
登出代码
public async Task Logout()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return Redirect("/");
}
关于ASP.NET Core 2.0中CookieAuthentication如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。