在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中分别设置,前者我们叫注册服务,后者我们叫注册中间件


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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX UI控件教程(二十五)之Color Picker

翻译自 Color Picker 本章介绍ColorPicker控件&#xff0c;提供其设计概述&#xff0c;并说明如何在JavaFX应用程序中使用它。 JavaFX SDK中的颜色选择器控件是一个典型的用户界面组件&#xff0c;使用户可以从可用范围中选择特定颜色&#xff0c;或通过指定RGB或HSB组合来设…

ssl1217-删边【图论,dfs】

题目 给出一个连通无向图&#xff0c;求最多能删掉多少条边后还是连通图。 输入 4(顶点数) 6(边数) 1 2 (表示一条点1到点2的线) 1 3 1 4 2 3 2 4 3 4 输出 3 dfs解题思路 这道题其实不用dfs更简单&#xff0c;但是毕竟例题还是用一下吧。 首先我们如果到达一个点便…

英语不会读怎么办?它来教你……

大家好&#xff0c;我是雄雄&#xff0c;今天我又给大家分享好看又实用的软件啦~今天给大家分享的是一个比昨天的随机点名系统还要实用的软件&#xff0c;如果说昨天的随机点名系统只适合老师或者某些需要点名的朋友使用的话&#xff0c;那么今天分享的软件则是一个人人都可使用…

数据维护

&#xff08;1&#xff09;在学生表Student中插入一条记录&#xff08;‘001201’&#xff0c;‘王一山’&#xff0c;‘男’&#xff0c;1980-12-4&#xff09;。 insert into student values(001201,王一山,男,1980-12-4) &#xff08;2&#xff09;插入一条选课记录&#xf…

深入探索.NET框架内部了解CLR如何创建运行时对象

前言 SystemDomain, SharedDomain, and DefaultDomain。对象布局和内存细节。方法表布局。方法分派&#xff08;Method dispatching&#xff09;。 因为公共语言运行时(CLR)即将成为在Windows上创建应用程序的主角级基础架构, 多掌握点关于CLR的深度认识会帮助你构建高效的, …

方法的重载

package com.wdl.day09;/** 方法的重载&#xff08;overload&#xff09; loading...** 1.定义&#xff1a;在同一个类中&#xff0c;允许存在一个以上的同名方法&#xff0c;只要它们的参数个数或者参数类型不同即可。** "两同一不同":同一个类、相同方法名* …

JavaFX UI控件教程(二十六)之Pagination Control

翻译自 Pagination Control 本章介绍如何向JavaFX应用程序添加分页控件。它教授如何向应用程序添加分页控件&#xff0c;管理其页面项&#xff0c;以及使用CSS样式设置控件元素的样式。 分页控件&#xff0c;用于浏览分成较小部分的多页内容。典型用途包括浏览邮箱中的电子邮…

长风破浪会有时,直挂云帆济沧海……

自从长假开学以来&#xff0c;班内学生的状态一直不如我所愿。前几天刚入学&#xff0c;因为马上就就业了&#xff0c;所以对他们的安排还是以做项目为主&#xff0c;早在假期的时候就已经将学生分为人数不等的8个小组&#xff0c;其中开发两个小组&#xff0c;前端5个小组以及…

ssl1759-求连通分量【图论,深搜,广搜】

题目 水题系列。给出一个图&#xff0c;求他的连通分量。 科普&#xff1a;连通分量就是一个图中可以连接最多点的子图&#xff08;可以是它本身&#xff09;的点数量。 输入 5(点的数量) 1 2(表示1和2连通) 3 4 2 3 0 0(表示停止输入) 输出 4 解题思路 Er…这道题没…

可变个数的形参

package com.wdl.day09;/** 可变个数形参的方法** 1.jdk 5.0新增的内容* 2.具体使用&#xff1a;* 2.1 可变个数形参的格式&#xff1a;数据类型 ... 变量名* 2.2 当调用可变个数形参的方法时&#xff0c;传入的参数个数可以是&#xff1a;0个&#xff0c;1个,2个&#xff…

JavaScript表单

JavaScript中表单知识总结 1 readonly和disabled 共同点&#xff1a;都是导致内容不可以更改 区别&#xff1a; readonly&#xff1a;中的内容是可以提交的 disabled&#xff1a;数据是不可以提交的,不可以在被操作 2表单提交的方式 οnsubmit“return sub()” <input t…

.NET 传奇 1.0 的出版过程,以及未来计划

今年五月初开始在微博的头条文章连载《.NET 的一点历史故事》&#xff0c;是一件非常快乐的事情。在各方朋友们的鼓励和支持之下&#xff0c;除去公开连载的八个章节&#xff0c;其后又先后完成其他十个章节&#xff0c;首先通过收费阅读渠道做了分享。到五月底的时候&#xff…

JavaFX UI控件教程(二十七)之File Chooser

翻译自 File Chooser 本章介绍如何使用FileChooser该类使用户能够导航文件系统。本章提供的示例说明了如何打开一个或多个文件&#xff0c;配置文件选择器对话框窗口以及保存应用程序内容。 与其他用户界面组件类不同&#xff0c;FileChooser该类不属于该javafx.scene.contr…

sql server高级查询,看这篇文章就够了

先选择一个数据库 use jobtest go引入&#xff1a;该数据库jobtest里面有两张表&#xff0c;Student学生表和Grade年级表&#xff0c;表中的数据如下所示&#xff1a; 学生表Student&#xff1a; 年级Grade表&#xff1a; 接下来我们来看看sql server中的子查询&#xff1a…

ssl1104-USACO 2.1城堡(foodfill)【图论,广搜】

##前言 由于这道题比较难&#xff0c;有不好描述&#xff0c;我就直接贴题目了。 ##Description 以一个几乎超乎想像的运气&#xff0c;农民约翰在他的生日收到了一张爱尔兰博彩的奖券。 这一张奖券成为了唯一中奖的奖券。 农民约翰嬴得爱尔兰的乡下地方的一个传说中的城堡。 …

直接输出数组的名字不一定是地址值

package com.wdl.day09;/*** 创建人 wdl* 创建时间 2021/8/12* 描述*/ public class ArrayPrintTest {public static void main(String[] args) {int[] arr new int[]{1, 2, 3};System.out.println(arr);//地址值char[] arr1 {a, b,c};System.out.println(arr1);//abc} }

jQuery的简介

jQuery的简介 [1]为什么学习jQuery A、JS书写代码的时候结构比较的臃肿 B、JS获得元素对象的方式比较的单一 C、JS书写的代码浏览器的兼容性比较差 D、JS实现动画的效果比较的麻烦 [2]什么是jQuery javascriptQuery(js库) 目前最流行的JavaScript函数库&#xff0c;对JavaScrip…

JavaFX UI控件教程(二十八)之UI控件的自定义

翻译自 Customization of UI Controls 本章介绍了UI控件自定义的各个方面&#xff0c;并总结了Oracle提供的一些提示和技巧&#xff0c;以帮助您修改UI控件的外观和行为。 您可以通过应用层叠样式表&#xff08;CSS&#xff09;&#xff0c;重新定义默认行为和使用单元工厂来…

好多人都说存储过程很难?认真看这篇文章就够了

何为存储过程&#xff1f;存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的sql程序&#xff0c;说直白点&#xff0c;java知道吧&#xff1f;和java的方法一样。每遇到一个新的知识点时&#xff0c;我们都会看看它的优点&#xff0c;从而加深对它学习的欲望&…

下一代的 Actor 模型框架 Proto Actor

ProtoAct 是下一代的 Actor 模型框架&#xff0c;提供了 .NET 和 Go 语言的实现&#xff0c;默认支持分布式&#xff0c;提供管理和监控功能。在过去几年&#xff0c;我们经常看到两种 Actor 模型方法相互竞争&#xff0c;首先是经典的 Erlang/Akka 风格的 Actor 模型&#xff…