Asp.net Core 2.0 实现Cookie会话
与1.0版本相比微软做了一些调整。详细请参考官方文档,我这里就讲2.0的吧
1.首先要在 根目录下 Startup.cs 类中启用 cookie会话,有两处要配置
第一处在 public void Configure(IApplicationBuilder app, IHostingEnvironment env) 方法里
设置 app.UseAuthentication();
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
//启用资源文件访问
app.UseStaticFiles();
//启用cookie会话
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
第二处 在public void ConfigureServices(IServiceCollection services) 方法里
“你的cookie名称”--一定要一致。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//services.Configure<IISOptions>(option=>{
// option.AuthenticationDisplayName="";
//});
services.AddCoreServices();
//设置cookie信息
services.AddAuthentication("你的cookie名称").AddCookie("你的cookie名称",Options=>{
Options.LoginPath="/WeChat/Login";//设置登录页,还有其他配置就不作介绍了
});
}
2.登录
2.0的登录作了调整 需要引用 using Microsoft.AspNetCore.Authentication; 此命名空间
public IActionResult Login(LoginViewModel model,string returnUrl = null)
{
//省略到数据库验证代码
............
//设置声明,从数据库读取,设置角色之类,详情请科普 mvc的Identity声明认证
var claims = new List<Claim>()
{
new Claim("userModel",JsonConvert.SerializeObject(model)),
//new Claim("Role",model.RoleName),
};
var userPrincipal = new ClaimsPrincipal(new ClaimsIdentity(claims, "声明的名称"));
//登陆
awiat HttpContext.SignInAsync("你的cookie名称", userPrincipal,new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddMinutes(900)//过期时间
});
if(returnUrl==null)
{
//重定向到首页
return RedirectToAction("Index", "Home");
}
//重定向到初始请求页
return Redirect(returnUrl);
}
3.退出
/// <summary>
/// 退出
/// </summary>
public IActionResult Logout()
{
await HttpContext.SignOutAsync("你的cookie名称");
//重定向到登录页
return RedirectToAction("Login", "Account");
}
好了,说完了。。。
Asp.net Core 2.0 实现Cookie会话的更多相关文章
- ASP.NET Core 2.0使用Cookie认证实现SSO单点登录
之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NE ...
- ASP.NET Core 2.0 多应用实现Cookie共享
前言 .NET Core 2.0 发布之后,在Authentication中间件部分,相关API有不少改动(官方文档),本文主要讲的就是实现应用Cookie共享,对Cookie中间件使用不了解的可以去 ...
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- [译]ASP.NET Core 2.0 会话状态
问题 如何在ASP.NET Core 2.0中存储会话状态? 答案 创建一个空项目,修改Startup类的ConfigureServices()方法,添加会话状态服务和它后台的存储服务: public ...
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
EF Core使用SQL调用返回其他类型的查询 假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法 ...
- ASP.NET Core 3.0 入门
原文:ASP.NET Core 3.0 入门 课程简介 与2.x相比发生的一些变化,项目结构.Blazor.SignalR.gRPC等 课程预计结构 ASP.NET Core 3.0项目架构简介 AS ...
- ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介
概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...
- .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南
ASP.NET Core 2.0 发布日期:2017年8月14日 ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET ...
- [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问
前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...
随机推荐
- Mybatis报错invalid comparison: java.util.Date and java.lang.String
请求参数中两个属性确实都是date类型,数据库也确认是data类型,这个错误是因为 在这里把date类型的参数与单引号做了比较出现的,删除就可以正常运行了.
- 速刷git<一> 常用命令记录
git config --list 列出配置 --local 对某个仓库有效 --global 对当前用户的所有仓库有效 --system 对系统所有登录用户有效git reset --ha ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
- PyQt(Python+Qt)学习随笔:调用disconnect进行信号连接断开时的信号签名与断开参数的匹配要求
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在使用信号调用disconnect()方法断开信号和槽的连接时,信号可以带签名也可不带签名,参数可以 ...
- Flutter · Python AI 弹幕播放器来袭
AI智能弹幕(也称蒙版弹幕):弹幕浮在视频的上方却永远不会挡住人物.起源于哔哩哔哩的web端黑科技,而后分别实现在IOS和Android的app端,如今被用于短视频.直播等媒体行业,用户体验提升显著. ...
- 性能测试学习之路 (一)认识jmeter(性能测试流程 && 性能测试通过标准 &&jmeter体系结构)
性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 1 性能测试技能树 性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势.性能测试工作实质 ...
- VMware 12 与Centos 7建立共享文件夹 && vmware 15 pro过期激活秘钥
1 vmware 15pro评估过期 网上找到的激活秘钥,激活密钥: YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8(亲试有效)UG5J2-0ME12-M89WY-NPWXX-WQH88U ...
- 基数排序(Radix Sort)
基数排序(Radix Sort) 第一趟:个位 收集: 第二趟:十位 第三趟:百位 3元组 基数排序--不是基于"比较"的排序算法 递增就是把收集的过程返过来 算法效率分析 需要r ...
- Day5 - 02 定义函数
定义函数 Python中定义函数要使用def语句. 依次写出函数名.括号.括号中的参数和冒号,在缩进块中编写函数体,通过return语句返回函数返回值.如: ...
- win10平衡模式、高性能模式和卓越模式三种电池模式的区别
win10在1803版本后,有了很多隐藏的功能.电池模式中的"卓越模式"就是其中之一. 互相比较一下: 节能模式:顾名思义是最省电的,此模式下会禁用一些系统特效,且CPU运行频率是 ...