与1.0版本相比微软做了一些调整。详细请参考官方文档,我这里就讲2.0的吧
1.首先要在 根目录下 Startup.cs 类中启用 cookie会话,有两处要配置
第一处在 public void Configure(IApplicationBuilder app, IHostingEnvironment env) 方法里
设置 app.UseAuthentication();
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ ?if (env.IsDevelopment()) ?{ ????app.UseDeveloperExceptionPage(); ?} ?else ?{ ????app.UseExceptionHandler("/Home/Error"); ?} ????//启用资源文件访问 ????app.UseStaticFiles(); ????//启用cookie会话 ????app.UseAuthentication(); ????app.UseMvc(routes => ????{ ???????routes.MapRoute( ???????name: "default", ???????template: "{controller=Home}/{action=Index}/{id?}"); ????});}
第二处 在public void ConfigureServices(IServiceCollection services) 方法里
“你的cookie名称”--一定要一致。
public void ConfigureServices(IServiceCollection services){ ??services.AddMvc(); ??//services.Configure<IISOptions>(option=>{ ??// option.AuthenticationDisplayName=""; ???//}); ??services.AddCoreServices(); ??//设置cookie信息 ??services.AddAuthentication("你的cookie名称").AddCookie("你的cookie名称",Options=>{ ??Options.LoginPath="/WeChat/Login";//设置登录页,还有其他配置就不作介绍了 ??});}
2.登录
2.0的登录作了调整 需要引用 using Microsoft.AspNetCore.Authentication; 此命名空间
public IActionResult Login(LoginViewModel model,string returnUrl = null){ //省略到数据库验证代码 ............ //设置声明,从数据库读取,设置角色之类,详情请科普 mvc的Identity声明认证 var claims = new List<Claim>() ??{ ??new Claim("userModel",JsonConvert.SerializeObject(model)), ?//new Claim("Role",model.RoleName), ??}; ?var userPrincipal = new ClaimsPrincipal(new ClaimsIdentity(claims, "声明的名称")); ??//登陆 ??awiat HttpContext.SignInAsync("你的cookie名称", userPrincipal,new ???????AuthenticationProperties ??{ ??ExpiresUtc = DateTime.UtcNow.AddMinutes(900)//过期时间 ??}); if(returnUrl==null) { ? //重定向到首页 return RedirectToAction("Index", "Home"); } //重定向到初始请求页 return Redirect(returnUrl);}
3.退出
/// <summary>/// 退出/// </summary>public IActionResult Logout(){ await HttpContext.SignOutAsync("你的cookie名称"); //重定向到登录页 ???return RedirectToAction("Login", "Account");}
好了,说完了。。。
Asp.net Core 2.0 实现Cookie会话
原文地址:http://www.cnblogs.com/abcde102978/p/7592708.html