码迷,mamicode.com
首页 > Web开发 > 详细

Asp.net Core 2.0 实现Cookie会话

时间:2017-09-26 17:41:59      阅读:1635      评论:0      收藏:0      [点我收藏+]

标签:contex   serial   soft   参考   ring   context   target   star   sop   

与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会话

标签:contex   serial   soft   参考   ring   context   target   star   sop   

原文地址:http://www.cnblogs.com/abcde102978/p/7592708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!