一、登陆页面的Controller

  1. [Authorize(Roles = "Admin,SuperAdmin")]
  2. public class ManageController : Controller
  3. {
  4. public IActionResult Index()
  5. {
  6. return View();
  7. }
  8.  
  9. [AllowAnonymous]
  10. public IActionResult Login(string returnUrl = null)
  11. {
  12. _logger.LogInformation("进入登录页面");
  13. TempData["returnUrl"] = returnUrl;
  14. ViewBag.Msg = " ";
  15. return View();
  16. }
  17.  
  18. [AllowAnonymous]
  19. [HttpPost]
  20. public async Task<IActionResult> LoginCheck(string name, string password, string returnUrl)
  21. {
  22. string loginName = Filter.FilterHTML(name);
  23. var account = await _context.Account.FirstOrDefaultAsync(g => g.LoginName.Equals(loginName));
  24. if (account == null || (!account.Password.Equals(password)))
  25. {
  26. ViewBag.Msg = "账号或密码有误,请重新输入";
  27. return View("Index");
  28. }
  29. else
  30. {
  31. var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
  32. identity.AddClaim(new Claim(ClaimTypes.Sid, account.Id.ToString()));
  33. identity.AddClaim(new Claim(ClaimTypes.Name, account.Name));
  34. identity.AddClaim(new Claim(ClaimTypes.Role, account.Role));
  35. await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), new AuthenticationProperties
  36. {
  37. IsPersistent = true,
  38. ExpiresUtc = DateTime.Now.AddDays(1)
  39. });
  40.  
  41. if (returnUrl == null)
  42. {
  43. returnUrl = TempData["returnUrl"]?.ToString();
  44. }
  45. if (returnUrl != null)
  46. {
  47. return LocalRedirect(returnUrl);
  48. }
  49. else
  50. {
  51. return RedirectToAction(nameof(HomeController.Index), "Manage");
  52. }
  53. }
  54. }
  55.  
  56. [HttpGet]
  57. public async Task<IActionResult> Logout()
  58. {
  59. await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
  60. return RedirectToAction("login");
  61. }
  62.  
  63. [AllowAnonymous]
  64. public IActionResult Denied()
  65. {
  66. return View();
  67. }
  68. }

  二、配置Startup.cs的ConfigureServices方法,增加如下代码

  1. //配置使用Authorize登陆认证
  2. services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
  3. .AddCookie(options =>
  4. {
  5. options.LoginPath = new PathString("/manage/login");
  6. options.AccessDeniedPath = new PathString("/manage/denied");
  7. });

  三、配置Startup.cs的Configure方法,增加如下代码

  1. app.UseAuthentication();//配置使用Authorize登陆认证

  

asp.net core 基于角色的认证登陆的更多相关文章

  1. ASP.NET Core 基于JWT的认证(二)

    ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...

  2. ASP.NET Core 基于JWT的认证(一)

    ASP.NET Core 基于JWT的认证(一) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计 ...

  3. Asp.Net Core基于JWT认证的数据接口网关Demo

    近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...

  4. ASP.NET Core集成现有系统认证

    我们现在大多数转向ASP.NET Core来使用开发的团队,应该都不是从0开始搭建系统,而是老的业务系统已经在运行,ASP.NET Core用来开发新模块.那么解决用户认证的问题,成为我们的第一个拦路 ...

  5. asp.net core 2.0的认证和授权

    在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...

  6. 【转载】asp.net core 2.0的认证和授权

    在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...

  7. 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销

    在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...

  8. ASP.NET Core基于K8S的微服务电商案例实践--学习笔记

    摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...

  9. ASP.NET Core 中jwt授权认证的流程原理

    目录 1,快速实现授权验证 1.1 添加 JWT 服务配置 1.2 颁发 Token 1.3 添加 API访问 2,探究授权认证中间件 2.1 实现 Token 解析 2.2 实现校验认证 1,快速实 ...

随机推荐

  1. Codeforces 1064 D - Labyrinth

    D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以 ...

  2. CentOS7.5下安装Python3.7 --python3

    1.将本地安装包上传到远程主机上 scp Python-3.7.0.tgz root@123.206.74.24:/root 2.扩展 安装Python之前安装Python相关的依赖包(主要是u红色部 ...

  3. eclipse 运行 mapreduce程序报错 No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String).

    报错信息 17/07/06 17:00:27 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Ap ...

  4. Caffarelli 关于自由边界正则性的论文C1

    Caffarelli 关于自由边界正则性的论文 接下来主要想叙述一下Caffarelli的C1文章中的一些想法,这是最近这几天看的文献. 对于从自由边界的Lipschitz正则性到$C^{1,\alp ...

  5. Windows 独立启动方式安装 Archiva

    在 Windows 中以独立启动方式安装. 你可以将安装文件拷贝到任何你希望运行的目录中,下面的步骤中.我们没有将 Archiva 安装成服务,所以你需要通过控制台的方式来进行启动. Windows ...

  6. php 安装 redis扩展

    https://segmentfault.com/a/1190000009422920 wget 源码编译

  7. mongoose中connect()、createConnection()和connection的区别和作用

    转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据 ...

  8. Charles 抓包工具

    参考博客: https://blog.csdn.net/mxw2552261/article/details/78645118 发包与改包: https://blog.csdn.net/b722305 ...

  9. Java JRT

    解释器 运行步骤: 找到环境变量CLASSPATH,CLASSPATH包含一个或者多个目录,用作查找.class文件的根目录 从根目录开始,解释器获取包名并将每个.替换成\或/(取决于操作系统) 得到 ...

  10. UVa 10905 - Children's Game 排序,题目没有说输入是int 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...