上篇有朋友提及到如果nginx做集群后应该还会有下一篇文章主讲session控制,一般来说就是登陆;本篇分享的内容不是关于分布式session内容,而是netcore自带的授权Authorize,Authorize粗略的用法,希望能对大家有好的帮助;

  • web网站session和cookie关系
  • 在NetCore中使用Authorize登陆

web网站session和cookie关系

要说session和cookie关系,恐怕有很多文章都有说过,这里我只阐述下自己的理解,尽可能的做到通俗易懂;对于session往往存储于服务端,登陆的话session一般会存储登陆用户的基本信息,还有个会话唯一sessionId(以下简称:token),这个token会分配到每个用户头上,服务端根据用户请求的token来识别服务端存储的登陆信息,以此达到登陆的目的;

客户端要传递这个同样的token,必须要存储起来,这就要用到咋们说的cookie,客户端用cookie来存储token,cookie拥有过期时间特性能够很好的做到登录失效的效果(尽管session也有),往往在分布式的时候cookie和session的失效时间都会设置,只要某一个时间过期了将视为需要重新登录或者需要重新设置cookie;下面将截图在谷歌浏览器下某个网站的cookie存储图:

能够看出cookie存储就是key-value的方式,唯一的名字+value;

在.NetCore中使用Authorize登陆

对于Authorize经常使用mvc的朋友肯定不陌生,在core中使用Authorize登录首先需要在Starup.cs的ConfigureServices方法中配置下,这里我直接给出粗略的配置吧(满足登录):

 1  public void ConfigureServices(IServiceCollection services)2         {3             services.AddMvc();4 5             //配置authorrize6             services.AddAuthentication(b =>7             {8                 b.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;9                 b.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
10                 b.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
11             }).
12             AddCookie(b =>
13             {
14                 //登陆地址
15                 b.LoginPath = "/login";
16                 //sid
17                 b.Cookie.Name = "My_SessionId";
18                 // b.Cookie.Domain = "shenniu.core.com";
19                 b.Cookie.Path = "/";
20                 b.Cookie.HttpOnly = true;
21                 b.Cookie.Expiration = new TimeSpan(0, 0, 30);
22
23                 b.ExpireTimeSpan = new TimeSpan(0, 0, 30);
24             });
25         }

下面简单说明下cookie的属性效果:
  • b.Cookie.Name:就是cookie的名字,对应第一小节谷歌浏览器截图的Name;
  • b.LoginPath:设置登陆失败或者未登录授权的情况下,直接跳转的路径这里,这是/login;
  • b.Cookie.Domain:指定cookie对应的域名,这里我没域名和没设置本地host所以屏蔽,屏蔽的或默认localhost;
  • b.Cookie.HttpOnly:设置cookie只读情况;
  • b.Cookie.Expiration:cookie过期时间;

好了咋们设置完后,需要在login页面设置这样的逻辑和代码;首先是get路由,她会做两件事情:验证是否已授权登陆过和未登录显示登录试图界面:

public IActionResult OnGet()
{//登录授权直接跳转index界面if (HttpContext.User.Identity.IsAuthenticated){return RedirectToPage("Index");}return Page();
}

这里利用Identity.IsAuthenticated来校验登录状态,登录了直接重定向到主页面Index这没什么说的;如果没登录,需要用户登陆下,然后在做授权,以下是用户post提交的登录请求处理:

/// <summary>/// 登录/// </summary>/// <returns></returns>public async Task<IActionResult> OnPost(){
        </span><span style="color:#0000ff;">if</span><span style="color:#000000;"> (ModelState.IsValid){</span><span style="color:#008000;">//</span><span style="color:#008000;">登陆授权</span><span style="color:#0000ff;">var</span> claims = <span style="color:#0000ff;">new</span> List&lt;Claim&gt;<span style="color:#000000;">();claims.Add(</span><span style="color:#0000ff;">new</span> Claim(ClaimTypes.Name, <span style="color:#0000ff;">this</span><span style="color:#000000;">.LoginUser.UserName));</span><span style="color:#0000ff;">var</span> indentity = <span style="color:#0000ff;">new</span> ClaimsIdentity(claims, <span style="color:#800000;">"</span><span style="color:#800000;">denglu</span><span style="color:#800000;">"</span><span style="color:#000000;">);</span><span style="color:#0000ff;">var</span> principal = <span style="color:#0000ff;">new</span><span style="color:#000000;"> ClaimsPrincipal(indentity);</span><span style="color:#0000ff;">await</span><span style="color:#000000;"> HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,principal);</span><span style="color:#008000;">//</span><span style="color:#008000;">验证是否授权成功</span><span style="color:#0000ff;">if</span><span style="color:#000000;"> (principal.Identity.IsAuthenticated){</span><span style="color:#0000ff;">return</span> RedirectToPage(<span style="color:#800000;">"</span><span style="color:#800000;">Index</span><span style="color:#800000;">"</span><span style="color:#000000;">);}}</span><span style="color:#0000ff;">return</span><span style="color:#000000;"> Page();}</span></pre>


http://www.taodudu.cc/news/show-3553735.html

相关文章:

  • Thinkphp使用Authorize.Net实现VISA信用卡支付
  • swagger2UI之swagger-bootstrap-ui的Authorize 功能
  • SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解
  • php authorize,php – Laravel中Request类中authorize方法的目的是什么?
  • Asp.Net Core Authorize解析(源码解读)
  • authorize.net_6个最佳Authorize.Net WordPress插件(比较)
  • Authorize权限验证
  • php authorize,/TMP问题与An AJAX HTTP error与Path: /core/authorize.php/core/authorize.php解决办法...
  • ASP.NET MVC使用Authorize过滤器验证用户登录
  • Authorize---支付
  • authorize(基于注解的权限认证框架)
  • docker中修改mysql最大连接数及配置文件
  • mysql 设置最大连接数
  • 超出MySQL最大连接数解决办法
  • mysql 最大连接 修改_常用的三种修改mysql最大连接数的方法
  • 修改mySql最大连接数
  • MySQL修改最大连接数限制
  • mysql查看当前最大连接数_MySQL查看当前连接数、连接数和最大连接数
  • mysql最大连接数合理值_MySQL服务器最大连接数怎么设置才合理[转]
  • mysql数据库设置连接数_MySQL数据库之修改MYSQL最大连接数的3种方法分享
  • mysql最大错误连接数_超过mysql最大连接的错误
  • 关于临时修改mysql最大连接数与永久修改
  • mysql修改连接数_修改MYSQL最大连接数的3种方法
  • mysql 之 设置最大连接数问题
  • Mysql最大连接数,TimeOut配置
  • 【已解决】怎么修改mysql最大连接数
  • Linux永久修改Mysql最大连接数
  • Centos 7 设置MySQL 最大连接数
  • mysql怎么看历史最高连接数_查看及修改MYSQL最大连接数
  • mysql 最大连接池数_mysql 最大连接数 连接池

粗略使用.NetCore2.0自带授权登陆Authorize相关推荐

  1. Oauth2.0 安全性(以微信授权登陆为例)

    前言 用户 A 要使用微信账号登陆 Z 平台(www.z.com),一个黑客 H 想要把使用微信账号登陆 Z 平台的用户 A 转到恶意网站(www.h.com)来侵犯 A 的隐私 为什么要校验 red ...

  2. 微信OAuth2网页授权登陆接口

    微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...

  3. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  4. php qq授权_PHP模拟QQ网页版授权登陆

    本篇文章小编将带大家一起学习一下如何用PHP模拟QQ网页版授权登录,附上代码,具有一定的参考价值,大家一起来学习一下吧! 第一步: 首先登陆QQ互联首页https://connect.qq.com/进 ...

  5. 微信开放平台开发第三方授权登陆(二):PC网页端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  6. python实现网页微信登陆_django 微信网页授权登陆的实现

    一.准备工作 0x00 开发前准备 服务号!!! 微信认证. 备案过的域名. 服务器. 0x01 手动触发dns更新 0x02 配置业务域名 0x03 将服务器请求转发到本地 修改服务器的 /etc/ ...

  7. web pc端 微信授权登陆 实例详解

    首先,看看微信官方文档,了解一下具体实现步骤 微信官方文档: 微信登陆开发指南 基本了解了微信登陆的流程后,然后我们再来一起踩坑 1.先去微信公众平台申请网站,appId,设置域名 2.调用微信地址生 ...

  8. php微信登录app接口开发文档,PHP微信OAuth2网页授权登陆接口

    微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...

  9. 实现自动带密码登陆远程机执行shell命令(linux)

    在centos下使用expect,实现带密码登陆远程机并执行shell命令. 第一步:安装expect sudo yum install expect 第二步:建立测试脚本 #!/usr/bin/ex ...

最新文章

  1. java字段不序列化注解_@Transient注解的使用(不被序列化和作为临时变量存储)...
  2. 机器学习实践五---支持向量机(SVM)
  3. java 显示透明背景png图片
  4. 文件拖放的一种简洁方法
  5. luogu P1427 小鱼的数字游戏
  6. 2.7 RMSprop
  7. 消息中间件学习总结(6)——RocketMQ之RocketMQ大数据畅想
  8. 有人说,30岁是程序员的一个末日期,写给30岁的程序员,到底该怎么做呢
  9. SSH远程执行命令环境变量问题
  10. ORB:新一代 Linux 应用
  11. 免费下载百度 豆丁 丁香 等平台文档
  12. 俄亥俄州立大学计算机科学转学成功,托福97,我是如何转学成功的?
  13. struct files_struct和struct fdtable
  14. 1.2 控制LED闪烁
  15. html input 删除线,css样式实现字体删除线效果
  16. GPS 入门 1 —— 基础知识
  17. 【前端用法】html5实现地理位置定位(JS获取当前地理位置的方法)
  18. @RestController注解的理解
  19. 我与CSDN的2020
  20. 南京2级计算机成绩查询,南京审计大学教务管理系统登录入口、成绩查询网上选课查分...

热门文章

  1. OPPO加码高端,到底能不能打?
  2. docker 的思维导图
  3. 笔记本外接的显示器突然不能用,显示无信号
  4. IntelliJ IDEA注释模板详解
  5. 解决微信小程序开发vendor.js文件超过500kb问题
  6. 第 43 章 SonicWALL
  7. 《测绘管理与法律法规》——基础测绘管理
  8. Redis持久化存储(详细)
  9. Unity 让物体同时播放两种动画
  10. 【用Java画空心金字塔】