Asp.net Core 2.0 实现Cookie会话

与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");
} 

好了,说完了。。。

时间: 2024-10-10 03:46:00

Asp.net Core 2.0 实现Cookie会话的相关文章

ASP.NET Core 2.0使用Cookie认证实现SSO单点登录

之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NET Core 2.0出来了试着使用ASP.NET Core尝试一下.假如我们有三个站点 domain.dev order.domain.dev passport.domain.dev domain.dev作为我们的主站肯定是可以匿名访问的,当点击登录按钮的时候就会跳转到passport.domain

ASP.NET Core 3.0 入门

原文:ASP.NET Core 3.0 入门 课程简介 与2.x相比发生的一些变化,项目结构.Blazor.SignalR.gRPC等 课程预计结构 ASP.NET Core 3.0项目架构简介 ASP.NET Core MVC 简介 Blazor SignalR Web API gRPC 发布 一. 创建项目 dotnet core 本质上是控制台应用 1. DI 依赖注入(Dependency Injection) IoC 容器(Inversion of Control)控制反转 注册(服务

NET Core 2.0使用Cookie认证实现SSO单点登录

NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NET Core 2.0出来了试着使用ASP.NET Core尝试一下.假如我们有三个站点 domain.dev order.domain.dev passport.domain.dev domain.dev作为我们的主站肯定是可以匿名访问

在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据

在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持   Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 使用方法不一致,对于3.0以前版本升级有限制.如果前端代码以固定更没法用了. 在Asp.Net Core 3.0中如何使用  Newtonsoft.Json 库序列化数据 官方给出了兼容处理方案,操作步骤如下: 1.引用Microsoft.AspNetCore

【转】ASP.NET Core 2.0中的HttpContext

  ASP.NET Core 2.0中的HttpContext相较于ASP.NET Framework有一些变化,这边列出一些之间的区别.   在ASP.NET Framework中的 System.Web.HttpContext 对应 ASP.NET Core 2.0中的 Microsoft.AspNetCore.Http.HttpContext. HttpContext   HttpContext.Items转换成: IDictionary<object, object> items =

asp.net core 2.0 web api基于JWT自定义策略授权

JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源.关于JWT的技术,可参考网络上文章,这里不作详细说明, 这篇博文,主要说明在asp.net core 2.0中,基于jwt的web api的权限设置,即在asp.net core中怎么用JWT,再次就是不同用户或角色因为权限问题,即使援用Token,也不能访问不该访

丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0

丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0? 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnetcore-run-on-mono-in-year-of-monkey.html 提示 更新时间:2016年02月07日. 各位程序媛/程序猿们,猴年快乐. 相信不少媛/猿都是被标题吸引来的,那我我先解释下标题. 提示 本文是一篇半科普文,不对技术细节进行深入探究. 标题

在ASP.NET Core 2.0中使用CookieAuthentication

在ASP.NET Core中关于Security有两个容易混淆的概念一个是Authentication(认证),一个是Authorization(授权).而前者是确定用户是谁的过程,后者是围绕着他们允许做什么,今天的主题就是关于在ASP.NET Core 2.0中如何使用CookieAuthentication认证. 在ASP.NET Core 2.0中使用CookieAuthentication跟在1.0中有些不同,需要在ConfigureServices和Configure中分别设置,前者我

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity