分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

.NetCore 下开发独立的(RPL)含有界面的组件包 (四)处理授权过滤

发布时间:2023-09-06 02:28责任编辑:郭大石关键词:组件

对于我们的组件页面当然不是所有的用户都能访问,所以这里我们需要添加一个我们自己定义的一些授权过滤条件,那么这一块怎么来写呢?

首先我们必然会想到中间件,前面章节说道了中间件路由,我们只需要在路由地址之前校验一下就ok了,有了这个思想我们就来实现一下

当然需要我们自己定义的一些规则,比如组件下面的地址都是根据pathstring来设计,有自己的规则,不然中间件会过滤到其他的中间件路由地址

不如 ,dashboard页面是 /adminchain , 其他功能都可以以 /adminchain 以这个为开始  如: /adminchain/client 

那么我们在中间件路由地址前设置下:

string routeUrl = context.Request.Path; ???????????if (routeUrl.StartsWith(_options.PathRoute)) ???????????{ ???????????????//这里做验证 ???????????????/* ?????????????????这里是验证内容 ????????????????*/ ???????????????if (routeUrl.Equals(_options.PathRoute)) ???????????????{ ???????????????????var view = new HomeIndex(); ???????????????????await view.ExecuteAsync(context); ???????????????} ??????????????????????????} ???????????else ???????????{ ???????????????await _next(context); ???????????}

授权需要自定义,这里就需要把这个加到DashboardOptions中去设置,这里我们在里面多添加了一个授权属性 Authorization,并设置了默认的校验规则 

 public class DashboardOptions ???{ ???????public DashboardOptions() ???????{ ???????????AppPath = "/"; ???????????PathRoute = "/adminchina"; ???????????Authorization = new[] { new DefaultAuthorizationFilter() }; ???????} ???????/// <summary> ???????/// 返回应用路径地址 ???????/// </summary> ???????public string AppPath { get; set; } ???????/// <summary> ???????/// route 地址 ???????/// </summary> ???????public string PathRoute { get; set; } ???????/// <summary> ???????/// 授权校验过滤器 ???????/// </summary> ???????public IEnumerable<IDashboardAuthorizationFilter> Authorization { get; set; } ???}

在IDashboardAuthorizationFilter接口中我们只需要定义一个是否授权就行了,这里我们先不给参数,后面在来做

public interface IDashboardAuthorizationFilter ???{ ???????bool IsAuthorize(); ???}

我们添加了DefaultAuthorizationFilter的默认实现,我们这里来测试下 返回false的处理

public class DefaultAuthorizationFilter : IDashboardAuthorizationFilter ???{ ???????public bool IsAuthorize() ???????{ ??????????????????return false; ???????} ???} ???????????????????????

下来继续来写中间件里面的验证

 //这里做验证 ???????????????if (_options.Authorization.Any(auth => !auth.IsAuthorize())) ???????????????{ ?????????????????????????????????????context.Response.ContentType = "text/html; charset=utf-8"; ???????????????????await context.Response.WriteAsync("这是没有授权的页面"); ???????????????????return; ???????????????}

当我们访问中间件的时候就经过授权过滤了,其实做到这里其实还不够,因为我们在中间件自定义授权过滤中要根据某些业务获取某些服务,所以里面必须要获取某些服务,所以 IsAuthorize是需要添加参数的,下一章节就来说下这个参数应该写什么,怎么来写

.NetCore 下开发独立的(RPL)含有界面的组件包 (四)处理授权过滤

原文地址:https://www.cnblogs.com/liyouming/p/10194845.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved