asp.net core 基于角色的认证登陆
一、登陆页面的Controller
- [Authorize(Roles = "Admin,SuperAdmin")]
- public class ManageController : Controller
- {
- public IActionResult Index()
- {
- return View();
- }
- [AllowAnonymous]
- public IActionResult Login(string returnUrl = null)
- {
- _logger.LogInformation("进入登录页面");
- TempData["returnUrl"] = returnUrl;
- ViewBag.Msg = " ";
- return View();
- }
- [AllowAnonymous]
- [HttpPost]
- public async Task<IActionResult> LoginCheck(string name, string password, string returnUrl)
- {
- string loginName = Filter.FilterHTML(name);
- var account = await _context.Account.FirstOrDefaultAsync(g => g.LoginName.Equals(loginName));
- if (account == null || (!account.Password.Equals(password)))
- {
- ViewBag.Msg = "账号或密码有误,请重新输入";
- return View("Index");
- }
- else
- {
- var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
- identity.AddClaim(new Claim(ClaimTypes.Sid, account.Id.ToString()));
- identity.AddClaim(new Claim(ClaimTypes.Name, account.Name));
- identity.AddClaim(new Claim(ClaimTypes.Role, account.Role));
- await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), new AuthenticationProperties
- {
- IsPersistent = true,
- ExpiresUtc = DateTime.Now.AddDays(1)
- });
- if (returnUrl == null)
- {
- returnUrl = TempData["returnUrl"]?.ToString();
- }
- if (returnUrl != null)
- {
- return LocalRedirect(returnUrl);
- }
- else
- {
- return RedirectToAction(nameof(HomeController.Index), "Manage");
- }
- }
- }
- [HttpGet]
- public async Task<IActionResult> Logout()
- {
- await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
- return RedirectToAction("login");
- }
- [AllowAnonymous]
- public IActionResult Denied()
- {
- return View();
- }
- }
二、配置Startup.cs的ConfigureServices方法,增加如下代码
- //配置使用Authorize登陆认证
- services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
- .AddCookie(options =>
- {
- options.LoginPath = new PathString("/manage/login");
- options.AccessDeniedPath = new PathString("/manage/denied");
- });
三、配置Startup.cs的Configure方法,增加如下代码
- app.UseAuthentication();//配置使用Authorize登陆认证
asp.net core 基于角色的认证登陆的更多相关文章
- ASP.NET Core 基于JWT的认证(二)
ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...
- ASP.NET Core 基于JWT的认证(一)
ASP.NET Core 基于JWT的认证(一) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计 ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...
- ASP.NET Core集成现有系统认证
我们现在大多数转向ASP.NET Core来使用开发的团队,应该都不是从0开始搭建系统,而是老的业务系统已经在运行,ASP.NET Core用来开发新模块.那么解决用户认证的问题,成为我们的第一个拦路 ...
- asp.net core 2.0的认证和授权
在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...
- 【转载】asp.net core 2.0的认证和授权
在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...
- 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销
在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...
- ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...
- ASP.NET Core 中jwt授权认证的流程原理
目录 1,快速实现授权验证 1.1 添加 JWT 服务配置 1.2 颁发 Token 1.3 添加 API访问 2,探究授权认证中间件 2.1 实现 Token 解析 2.2 实现校验认证 1,快速实 ...
随机推荐
- Codeforces 1064 D - Labyrinth
D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以 ...
- CentOS7.5下安装Python3.7 --python3
1.将本地安装包上传到远程主机上 scp Python-3.7.0.tgz root@123.206.74.24:/root 2.扩展 安装Python之前安装Python相关的依赖包(主要是u红色部 ...
- 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 ...
- Caffarelli 关于自由边界正则性的论文C1
Caffarelli 关于自由边界正则性的论文 接下来主要想叙述一下Caffarelli的C1文章中的一些想法,这是最近这几天看的文献. 对于从自由边界的Lipschitz正则性到$C^{1,\alp ...
- Windows 独立启动方式安装 Archiva
在 Windows 中以独立启动方式安装. 你可以将安装文件拷贝到任何你希望运行的目录中,下面的步骤中.我们没有将 Archiva 安装成服务,所以你需要通过控制台的方式来进行启动. Windows ...
- php 安装 redis扩展
https://segmentfault.com/a/1190000009422920 wget 源码编译
- mongoose中connect()、createConnection()和connection的区别和作用
转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据 ...
- Charles 抓包工具
参考博客: https://blog.csdn.net/mxw2552261/article/details/78645118 发包与改包: https://blog.csdn.net/b722305 ...
- Java JRT
解释器 运行步骤: 找到环境变量CLASSPATH,CLASSPATH包含一个或者多个目录,用作查找.class文件的根目录 从根目录开始,解释器获取包名并将每个.替换成\或/(取决于操作系统) 得到 ...
- UVa 10905 - Children's Game 排序,题目没有说输入是int 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...