一.简介 前后端分离的站点一般都会用jwt或IdentityServer4之类的生成token的方式进行登录鉴权.这里要说的是小项目没有做前后端分离的时站点登录授权的正确方式. 一.传统的授权方式 这里说一下传统授权方式,传统授权方式用session或cookies来完成. 1.在请求某个Action之前去做校验,验证当前操作者是否登录过,登录过就有权限 2.如果没有权限就跳转到登录页中去 3.传统登录授权用的AOP-Filter:ActionFilter. 具体实现为: 1.增加一个类Curr…
引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t prescribe any particular way that servers canauthenticate clients during the WebSocket handshake. The WebSocketserver can use any client authentication me…
引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t prescribe any particular way that servers canauthenticate clients during the WebSocket handshake. The WebSocketserver can use any client authentication me…
在这里总结一下工作中遇到的鉴权和授权的方法 ① 固定token的方案 通过在nginx或者代码中写死token,或者通过在限制外网访问的方式已来达到安全授权的方式 ② session方案 分布式会话方案原理主要是将关于用户认证的信息存储在共享存储中.当用户访问微服务时,用户数据可以从共享存储中获取. ③ 客户端token方案 例如JWT,令牌在客户端生成,由身份验证服务进行签名,并且必须包含足够的信息,以便可以在所有微服务中建立用户身份.令牌会附加到每个请求上,为微服务提供用户身份验证,这种解决…
前言 ASP.NET Core 中 继承的是AuthorizationHandler ,而ASP.NET Framework 中继承的是AuthorizeAttribute. 它们都是用过重写里面的方法实现过滤请求的. 现在我们实现如何在 ASP.NET Core MVC 实现自定义授权. 关于AuthorizationHandler 详细介绍可以看这里 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/pol…
一. 简介 1. 说明 提到过滤器,通常是指请求处理管道中特定阶段之前或之后的代码,可以处理:授权.响应缓存(对请求管道进行短路,以便返回缓存的响应). 防盗链.本地化国际化等,过滤器用于横向处理业务,符合Aop思想,它也可以有效的避免代码的重复复制. 在Asp.Net Core中,有5种过滤器,分别是授权.资源.操作.结果.异常五大过滤器,与之前的Asp.Net 相比,多了一个资源过滤器,剩下的4个授权. 操作.结果.异常过滤器则没有什么太大的区别. PS: 传统Asp.Net 中的4种过滤器…
ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能读取一次,要想多次读取,需要借助 MemoryStream ,详见博问 asp.net core中2次读取Request.Body的问题 using (var buffer = new MemoryStream()) { Request.Body.CopyTo(buffer); buffer.Pos…
在开发过程中我们通常使用的是Db first这种模式,而在.net core 中推荐使用的却是 code first 反正我是很不习惯这种开发模式 于是就搜寻整个微软的官方文档,终于找到了有关.net core 使用Db first 的教程,这里给出链接:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/powershell 一.Db first 1.使用Db first 需要通过Nuget引用几个依赖包 Microsoft.E…
在之前的帖子里聊过状态管理有多痛苦,有时这是不可避免的.一个状态管理的例子大家都很熟悉,那就是单例.使用Swift时,有许多方法实现单例,这是个麻烦事,因为我们不知道哪个最合适.这里我们来回顾一下单例的历史,看一看在Swift中如何正确地实现单例. 如果你想直接看看Swift中单例的正确实现方式,直接跳到帖子最后即可. 往事回忆之ObjC单例 Swift是Objective-C的一种自然演变,它用如下的方式实现单例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16…
APM是一种应用性能监控工具,可以帮助理解系统行为, 用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据,分析业务系统各事务处理的交易路径和处理时间,实现对应用的全链路性能监测. 组成结构 探针(Agent):负责在客户端程序运行时搜索服务调用链路信息,发送给收集器 收集器(Collector):负责将数据格式化,保存到存储器 存储器(Storage):保存程序数据 UI界面(Dashboard):多维度展示数据 本文会主要针对 探针 (A…