在ASP.NET Core 2.0中使用CookieAuthentication
来源:互联网 发布:众信旅游怎么样 知乎 编辑:程序博客网 时间:2024/05/30 04:19
在ASP.NET Core中关于Security有两个容易混淆的概念一个是Authentication(认证),一个是Authorization(授权)。而前者是确定用户是谁的过程,后者是围绕着他们允许做什么,今天的主题就是关于在ASP.NET Core 2.0中如何使用CookieAuthentication认证。
在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
{
/// <summary>
/// The default value used for CookieAuthenticationOptions.AuthenticationScheme
/// </summary>
public const string AuthenticationScheme = "Cookies";
/// <summary>
/// The prefix used to provide a default CookieAuthenticationOptions.CookieName
/// </summary>
public static readonly string CookiePrefix = ".AspNetCore.";
/// <summary>
/// The default value used by CookieAuthenticationMiddleware for the
/// CookieAuthenticationOptions.LoginPath
/// </summary>
public static readonly PathString LoginPath = new PathString("/Account/Login");
/// <summary>
/// The default value used by CookieAuthenticationMiddleware for the
/// CookieAuthenticationOptions.LogoutPath
/// </summary>
public static readonly PathString LogoutPath = new PathString("/Account/Logout");
/// <summary>
/// The default value used by CookieAuthenticationMiddleware for the
/// CookieAuthenticationOptions.AccessDeniedPath
/// </summary>
public static readonly PathString AccessDeniedPath = new PathString("/Account/AccessDenied");
/// <summary>
/// The default value of the CookieAuthenticationOptions.ReturnUrlParameter
/// </summary>
public static readonly string ReturnUrlParameter = "ReturnUrl";
}
根据微软的命名规范在ConfigureServices统一使用Add***,在Configure统一使用Use***
登陆代码
public async Task<IActionResult> 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<IActionResult> Logout()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return Redirect("/");
}
原文地址:http://www.cnblogs.com/bidianqing/p/6870163.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
阅读全文
0 0
- 在ASP.NET Core 2.0中使用CookieAuthentication
- 在ASP.NET Core 2.0中使用MemoryCache
- 在ASP.NET Core中使用百度在线编辑器UEditor
- 在ASP.NET Core中使用百度在线编辑器UEditor
- 在ASP.NET CORE 2.0使用SignalR技术
- 在.net core中使用AutoMapper
- 在离线环境中使用.NET Core
- 在.NET Core中使用MEF
- 在离线环境中使用.NET Core
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
- 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持
- 在ASP.NET Core中使用Apworks快速开发数据服务
- 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证
- 在ASP.NET Core中使用AOP来简化缓存操作
- asp.net core 2.0 Cookie 使用
- 在asp.net 2.0中使用主题
- 在asp.net 2.0中使用WebParts
- 在asp.net 2.0中使用WebParts
- 下一代的 Actor 模型框架 Proto Actor
- PAT 甲级 1039. Course List for Student (25)
- .NET 传奇 1.0 的出版过程,以及未来计划
- Linux系统PWM驱动
- 深入探索.NET框架内部了解CLR如何创建运行时对象
- 在ASP.NET Core 2.0中使用CookieAuthentication
- 基于IntelliJ IDEA上创建Maven Spring MVC项目web.xml文件解读
- 在ASP.NET Core 2.0中使用MemoryCache
- 微软Azure开源开发者(深圳)峰会等你来
- .net core 集成 autofac
- IdentityServer4 SigningCredential(RSA 证书加密)
- Asp.Net Core 发布到IIS
- C# 7.2和8.0路线图
- IdentityServer4 指定角色授权(Authorize(Roles=&quot;admin&quot;))