6.如何使用官方提供的nuget包实现cookie登陆
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
这里需要用到的是这个nuget包
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "MyCookieMiddlewareInstance",
LoginPath = new PathString("/Admin/Account/Login/"),
AccessDeniedPath = new PathString("/Admin/Home/Index/"),
AutomaticAuthenticate = true,
AutomaticChallenge = true,
CookiePath = "/"
});
}
在startup.cs中加入
这里解释一下 AuthenticationScheme 对应cookie的名字
LoginPath 如果没有登陆,登陆页面的路径
AccessDeniedPath 如果权限不够返回的页面
CookiePath cookie可用的范围,这个功能我还没用过,应该可以实现前台和后台登陆的区分。
另外几个我也不是很清楚
如何写登陆方法呢
var identity = new ClaimsIdentity("AccountLogin");
identity.AddClaim(new Claim(ClaimTypes.Name, "Test"));
identity.AddClaim(new Claim("AccountID", ""));
identity.AddClaim(new Claim("Modules", "1,2,3"));
identity.AddClaim(new Claim(ClaimTypes.Role,"Admin"));
ClaimsPrincipal principal = new ClaimsPrincipal(identity);
await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal, new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTime.UtcNow.AddMinutes(),
});
以上就是写的 可以自定义存入cookie的信息
那么如何在程序中取出数据呢,我推荐使用扩展方法
public static class UserExtension
{/// <summary>
/// 获取用户ID
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public static int GetAccountID(this ClaimsPrincipal User)
{
var accountID = User.FindFirst("AccountID").Value;
return Convert.ToInt32(accountID);
}
}
将该类引入controller,还有视图
视图引用的话可以直接添加在_ViewImports.cshtml
@using MySqlDemo
@using MySqlDemo.Extend //这里就是引用到了UserExtension
@using MySqlDemo.ViewModels @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @inject Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration TelemetryConfiguration
这样的话就可以直接使用 User.GetAccountID(),来获取用户的ID
判断登陆可以用 也可以用Roles来判断角色 ,但是字符串必须一模一样 这里是不支持用户具有多个角色的判断。如果需要自己去写扩展方法
[Authorize(Roles = "SuperAdmin")]
退出登陆的话
await HttpContext.Authentication.SignOutAsync("MyCookieMiddlewareInstance");
6.如何使用官方提供的nuget包实现cookie登陆的更多相关文章
- 华为云提供针对Nuget包管理器的缓存加速服务
在Visual Studio 2013.2015.2017中,使用的是Nuget包管理器对第三方组件进行管理升级的.而且 Nuget 是我们使用.NET Core的一项基础设施,.NET的软件包管理器 ...
- ABP官方文档翻译 10.1 ABP Nuget包
ABP Nuget包 Packages Abp Abp.AspNetCore Abp.Web.Common Abp.Web Abp.Web.Mvc Abp.Web.Api Abp.Web.Api.OD ...
- 使用腾讯云提供的针对Nuget包管理器的缓存加速服务
继阿里巴巴开源镜像站(https://opsx.alibaba.com/).华为云镜像站点(https://mirrors.huaweicloud.com/ )之后,腾讯也已于近日上线了类似的服务,官 ...
- .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器
使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...
- 使用GUI工具高效构建你自己的Nuget包
写这篇文章的原因是我在学习构建nuget包的时候,发现了一个官方推荐的GUI工具,而官方的工具介绍文章已经过时,一些地方和现在最新版本的工具有些差异,所以特意利用假期最后一个下午写下来,希望能帮助更多 ...
- 让你发布的nuget包支持源代码调试
前情概要 在不久的从前(也还是要以年为单位哈), 我们如果需要调试第三方代码, 或者框架代码很麻烦. 需要配置symbols, 匹配原始代码路径等. 为此, MS推出了 Source Link 功能, ...
- 10分钟学会VS NuGet包私有化部署
前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...
- NuGetTools:批量上传、删除和显示NuGet包
快照 前言 NuGet是.NET开发必不可少的包管理工具,在日常更新版本过程中,可能需要批量发布 NuGet 包,也不可避免需要发布一些测试的包,后期想将这些测试或者过期的包删除掉.nuget.org ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的组件 Nuget 包制作 & 发布
一个技术汪的开源梦 —— 目录 微软的 ASP.Net Core 强化了 Nuget 的使用,所有的 .Net Core 组件均有 Nuget 管理,所以有必要探讨一下 .Net Core 组件制作 ...
随机推荐
- FIFO简记
FIFO( First In First Out)简单说就是指先进先出的存储方式,在高速外设读取时经常使用. FIFO从读写的时钟可分为同步和异步两种,从信号来说都有读.写使能信号,读.写数据总线,满 ...
- Trace-语句启动Profiler中暂停的跟踪会出现什么状况
2016-09-08 22:09 整理,未发布Profiler创建客户端跟踪.常规页不保存文件.不勾选服务器处理跟踪数据:事件选择RPC:Completed和SQL:BatchCompleted,列筛 ...
- c# unchecked关键字。byte 合并short
参考MSDN 代码: public class BytesOperate { /// <summary> /// 计算校验和,SUM /// </summary> public ...
- Java实现选择排序
选择排序思想就是选出最小或最大的数与第一个数交换,然后在剩下的数列中重复完成该动作. package Sort; import java.util.Arrays; public class Selec ...
- python---tcp/ip网络编程
重点总结: 服务端:一直运行(while true),监听运行所在机器(ip)某端口,多线程或多进程接收客户端的socket请求 客户端:主动发起请求,需求知道服务器的ip和端口 服务端: # -*- ...
- ASP.NET Identity - LockoutEnabled
LockoutEnabled 并不是想象中的 用户是否 锁定. 而是 LockoutEnabled 标示 登陆是否此用户要检查 LockoutEndDateUtc字段. 如果为true则判断Locko ...
- 最新版ssh hibernate spring struts2环境搭建
最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...
- 模拟jQuery简单封装ajax
/*模拟jQuery的写法 (简单写法)*/ var $={}; /*ajax*/ $.ajax = function (options) { /* * 请求 * 1.请求接口 type get po ...
- 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
验证的代码: #include <stdio.h> int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(" ...
- .NET委托和事件
.net学习之委托和事件 1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string ...