首页 > 其他分享 >.net core cookie 鉴权

.net core cookie 鉴权

时间:2024-08-20 15:37:31浏览次数:11  
标签:core return public cookie new net 鉴权 identity

思路:在startup中的configservice设置cookie鉴权,在config方法中use鉴权,然后添加两个页面,一个登录页面,一个用户信息页面(登陆后才能访问,没有登录则返回失败或者需要登录)

 

1:添加一个cookie鉴权的方法

 1 public class CookieAuthConfig
 2 {
 3     public static void ConfigureServices(IServiceCollection services)
 4     {
 5         //使用cookie鉴权
 6         services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
 7             .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
 8             {
 9                 options.LoginPath = "/Auth/Login";
10                 options.AccessDeniedPath = "/Auth/Login";
11             });
12     }
13 
14     public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
15     {
16 
17         app.UseAuthentication();
18     }
19 }

 

2:在startup.cs中的配置和使用方法中引用cookie鉴权的方法

 1  public void ConfigureServices(IServiceCollection services)
 2  {
 3      CookieAuthConfig.ConfigureServices(services);
 4 
 5 }
 6 
 7   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 8   {
 9       CookieAuthConfig.ConfigureServices(app,env);
10   }

 

3:controll里面的设置:

 1 public class AuthController : Controller
 2 {
 3 
 4 ///表示要授权才能访问对于的info页面
 5 
 6 [Authorize]
 7 public IActionResult Info()
 8 {
 9 
10     return View();
11 }
12 
13 
14  /// <summary>
15  /// 使用cookie方式存储用户信息
16  /// </summary>
17  /// <param name="username"></param>
18  /// <param name="password"></param>
19  /// <returns></returns>
20  public async Task<IActionResult> Login(string username, string password)
21  {
22      if ("liping".Equals(username) && "123456".Equals(password))
23      {
24          ClaimsIdentity identity = new ClaimsIdentity("lipingtest");
25          identity.AddClaim(new Claim(ClaimTypes.Name, username));
26          identity.AddClaim(new Claim(ClaimTypes.Email, "[email protected]"));
27          identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
28          identity.AddClaim(new Claim(ClaimTypes.Country, "China"));
29 
30          //写入cookie
31          await base.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
32                 new ClaimsPrincipal(identity),
33                 new AuthenticationProperties
34                 {
35                     ExpiresUtc = System.DateTimeOffset.UtcNow.AddMinutes(30),
36                 });
37 
38 
39          return new JsonResult(new
40          {
41              Status = true,
42              MSg = "登录成功"
43          });
44      }
45      else
46      {
47          await System.Threading.Tasks.Task.CompletedTask;
48          return new JsonResult(new
49          {
50              Status = false,
51              MSg = "登录失败"
52          });
53 
54      }
55 
56 
57  }
58 
59 
60 
61   public async Task<IActionResult> Logout()
62   {
63       //退出
64       await base.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
65 
66       return new JsonResult(new
67       {
68           Status = true,
69           MSg = "退出成功"
70       });
71   }
72 
73 
74 
75 }

 

标签:core,return,public,cookie,new,net,鉴权,identity
From: https://www.cnblogs.com/hanliping/p/18369548

相关文章

  • Visual Studio 2010旗舰版的VB.NET版本仓库库存管理系统的窗体应用程序
    PublicClassForm1'定义商品类ClassCommodityPublicNameAsStringPublicQuantityAsIntegerPublicPriceAsDoubleEndClass'商品列表PrivatecommoditiesAsNewList(OfCommodity)PrivateSubForm1_Load(senderAsObject,eAsEventA......
  • 神经网络之卷积篇:详解单层卷积网络(One layer of a convolutional network)
    详解单层卷积网络如何构建卷积神经网络的卷积层,下面来看个例子。已经写了如何通过两个过滤器卷积处理一个三维图像,并输出两个不同的4×4矩阵。假设使用第一个过滤器进行卷积,得到第一个4×4矩阵。使用第二个过滤器进行卷积得到另外一个4×4矩阵。最终各自形成一个卷积神经网络......
  • 【Kubernetes】 它是什么?为什么要拥抱它?
    1.什么是Kubernetes?Kubernetes是一个开源的容器集群管理系统,旨在自动化部署、扩展和管理容器化应用程序。‌它由Google开发,并现已成为云原生计算基金会(CNCF)管理的项目,是首个从CNCF毕业的项目,同时也是历史上增长最快的开源项目之一。Kubernetes的设计目的是简化容器化应用......
  • 【Altium】AD-元件类型Net Tie对PCB布线的影响
    【更多软件使用问题请点击亿道电子官方网站】1、文档目标创建元器件库时将元件类型选择了NetTie对PCB布线的影响2、问题场景进行PCB布线时,发现图1元件不同网络的焊盘可以连线,并且DRC检测不报错。图13、软硬件环境1)、软件版本:无关2)、电脑环境:Windows103)、外......
  • 界面控件DevExpress Blazor v24.2路线图预览——支持.NET 9、新增桑基图等
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。本文中包含了DevExpressBlazorv24.2官方发布的当前/预计的开发计划,请注意......
  • 在K8S中,什么是kubernetes?
    Kubernetes是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。Kubernetes(简称K8s)是一个功能强大的工具,它的设计初衷是提高在多个主机上运行的容器化应用的部署、伸缩、更新和维护过程的效率和简易性[1]。Kubernetes诞生于Google内部多年的容器管理技术积累,并......
  • 在K8S中,Kubernetes的组件有哪些?
    Kubernetes(K8s)是一个复杂的系统,由多个核心组件组成,这些组件协同工作来实现容器化应用的部署、扩展和管理。下面是Kubernetes的主要组件及其功能:1.控制平面组件控制平面负责管理集群的状态,包括调度、部署和维护集群中运行的容器化应用。控制平面组件通常运行在一个或多个控制节......
  • 在K8S中,Kubernetes与Docker有什么关系?
    Kubernetes和Docker都是现代云原生技术栈的重要组成部分,但它们各自解决的问题领域不同。下面详细介绍它们之间的关系以及区别:1.DockerDocker是一个流行的容器化平台,它允许开发者将应用程序及其依赖打包成一个轻量级、可移植的容器。这样做的好处包括:隔离性:每个容器都有自......
  • 寻访中国100家.NET中大企业 —— 第二站:苏州行
    一:事情起因在.NET圈里混了十多年,相信有不少人知道我专注于玩.NET高级调试,如今技术上的硬实力还是能够解决市面上的一些疑难杂症,但软实力却在另一个极端,如(人际交往,人情事故),所以就萌生了刻意训练的念头,便自我发起了这个活动"寻访中国100家.NET中大企业"。二:苏州站正值暑假,出行......
  • .NET 9 优化,抢先体验 C# 13 新特性
    前言微软即将在2024年11月12日发布.NET9的最终版本,而08月09日发布的.NET9Preview7是最终发布前的最后一个预览版。这个版本将与.NETConf2024一同亮相,并已与VisualStudio202217.12预览版1一同发布,可以直接通过VisualStudio安装。同时VisualStudioCode和C#Dev......