粗略使用.NetCore2.0自带授权登陆Authorize
上篇有朋友提及到如果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<Claim><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相关推荐
- Oauth2.0 安全性(以微信授权登陆为例)
前言 用户 A 要使用微信账号登陆 Z 平台(www.z.com),一个黑客 H 想要把使用微信账号登陆 Z 平台的用户 A 转到恶意网站(www.h.com)来侵犯 A 的隐私 为什么要校验 red ...
- 微信OAuth2网页授权登陆接口
微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...
- 微信开放平台开发第三方授权登陆(三):Android客户端
微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...
- php qq授权_PHP模拟QQ网页版授权登陆
本篇文章小编将带大家一起学习一下如何用PHP模拟QQ网页版授权登录,附上代码,具有一定的参考价值,大家一起来学习一下吧! 第一步: 首先登陆QQ互联首页https://connect.qq.com/进 ...
- 微信开放平台开发第三方授权登陆(二):PC网页端
微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...
- python实现网页微信登陆_django 微信网页授权登陆的实现
一.准备工作 0x00 开发前准备 服务号!!! 微信认证. 备案过的域名. 服务器. 0x01 手动触发dns更新 0x02 配置业务域名 0x03 将服务器请求转发到本地 修改服务器的 /etc/ ...
- web pc端 微信授权登陆 实例详解
首先,看看微信官方文档,了解一下具体实现步骤 微信官方文档: 微信登陆开发指南 基本了解了微信登陆的流程后,然后我们再来一起踩坑 1.先去微信公众平台申请网站,appId,设置域名 2.调用微信地址生 ...
- php微信登录app接口开发文档,PHP微信OAuth2网页授权登陆接口
微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...
- 实现自动带密码登陆远程机执行shell命令(linux)
在centos下使用expect,实现带密码登陆远程机并执行shell命令. 第一步:安装expect sudo yum install expect 第二步:建立测试脚本 #!/usr/bin/ex ...
最新文章
- java字段不序列化注解_@Transient注解的使用(不被序列化和作为临时变量存储)...
- 机器学习实践五---支持向量机(SVM)
- java 显示透明背景png图片
- 文件拖放的一种简洁方法
- luogu P1427 小鱼的数字游戏
- 2.7 RMSprop
- 消息中间件学习总结(6)——RocketMQ之RocketMQ大数据畅想
- 有人说,30岁是程序员的一个末日期,写给30岁的程序员,到底该怎么做呢
- SSH远程执行命令环境变量问题
- ORB:新一代 Linux 应用
- 免费下载百度 豆丁 丁香 等平台文档
- 俄亥俄州立大学计算机科学转学成功,托福97,我是如何转学成功的?
- struct files_struct和struct fdtable
- 1.2 控制LED闪烁
- html input 删除线,css样式实现字体删除线效果
- GPS 入门 1 —— 基础知识
- 【前端用法】html5实现地理位置定位(JS获取当前地理位置的方法)
- @RestController注解的理解
- 我与CSDN的2020
- 南京2级计算机成绩查询,南京审计大学教务管理系统登录入口、成绩查询网上选课查分...