.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作

.NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务

.NetCore 下开发独立的(RPL)含有界面的组件包 (三)构建界面

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

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

.NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

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

首先我们必然会想到中间件,前面章节说道了中间件路由,我们只需要在路由地址之前校验一下就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是需要添加参数的,下一章节就来说下这个参数应该写什么,怎么来写

当然这里是采用了默认的授权过滤,这里我们来添加一个自己的Filter,首先我们在WebTest中的UseAdminChina修改下,索性我们就把地址一起修改下,首先添加一个自定义的过滤器

 public class CustomAuthorizeFilter : IDashboardAuthorizationFilter{public bool IsAuthorize(){return true;}}

然后在Configure中修改下中间件

 app.UseAdminChina(options=> {options.PathRoute = "/adminchinatest";options.Authorization = new[] {new  CustomAuthorizeFilter()};});

由于这里参数,所以为了达到测试效果,我将默认的授权改成了true,将自定义的改成了false,用来测试自定义的过滤接口知否被处理

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

我们访问之前的地址发现已经没有了

访问下新的地址

至此,发现我们正在想hanfire这类组件慢慢的靠近,下一篇写一点Filter参数方面的处理

转载于:https://www.cnblogs.com/liyouming/p/10194845.html

.NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤相关推荐

  1. .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  2. Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)

    Demo路径:https://github.com/yanshengjie/RPL.Demo 1. Introduction Razor Page Library 是ASP.NET Core 2.1引 ...

  3. 在桌面Linux环境下开发图形界面程序的方案对比

    在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...

  4. 【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(一)

    storybook 介绍 入门 说说用法 prop-types .stories.jsx 下一篇: https://blog.csdn.net/tuzi007a/article/details/129 ...

  5. .netcore下的微服务、容器、运维、自动化发布

    微服务 1.1     基本概念 1.1.1       什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并采用 ...

  6. android开发重要控件,Android界面编程——Android基本控件

    Android界面编程 Android应用开发的一项重要内容就是界面开发.对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户. 作为一个程序员 ...

  7. Android应用开发:数据存储和界面展现-1

    1. 相对布局RelativeLayout 特点:相对布局所有组件可以叠加在一起:各个组件的布局是独立的,互不影响:所有组件的默认位置都是在左上角(顶部.左部对齐) 属性 功能描述 android:l ...

  8. [转帖]linux下的X server:linux图形界面原理

    linux下的X server:linux图形界面原理 https://www.cnblogs.com/liangxiaofeng/p/5034912.html linux下的X server:lin ...

  9. linux下的X server:linux图形界面原理

    linux下的X server:linux图形界面原理 Moblin Core是在Gnome Mobile的平台上建立.我以前玩Linux,提交的都和图像没有关系,连Xwindows都不用启动,开机后 ...

最新文章

  1. java 将整型数组内容写入txt文件_Java自学-I/O 字节流
  2. matlab如何进对图像进行透视变换,在Matlab中实现透视变换的方法 | 学步园
  3. 身患安全杂症,企业如何“下药”?
  4. WPJAM网址导航:最轻便快捷的WordPress网址导航插件
  5. 如何使用Airdrop将视频从Mac发送到iPhone?
  6. postgreSQL中文拼音排序
  7. java两级缓存框架J2cache
  8. UVA1391 Astronauts
  9. AAAI 2020对抗样本论文
  10. 一起来DIY一个人工智能实验室吧
  11. “天气之子”:GIS预测降雨
  12. 用java画爱心图_用java输出一个心型图案
  13. 在线制作h5——上帝的礼物
  14. 腾讯云CityBase产品白皮书 附下载地址
  15. linux网卡断流测试,RouterOS断流解决办法探讨
  16. arduino编码器计数_关于电机中断计数问题 - Arduino - 极客工坊 - Powered by Discuz!...
  17. 鼠标滚轮怎么变调节音量了
  18. FreeSWITCH之视频录像
  19. 【调剂】渤海大学2020年硕士研究生调剂信息
  20. 视频消息沟通,我的工作总是快人一步,感谢帧想

热门文章

  1. Angular.js 页面里的按钮点击事件处理
  2. SAP CRM WebUI上Opportunity reason字段的后台配置
  3. 从零开始学计算机组装与维修技术,从新手到高手:电脑组装、维护与故障排除...
  4. linux mysql主从配置_linux下mysql主从配置
  5. 两个字符串的删除操作Python解法
  6. shell如何控制文件读写不同时_如何定时备份Mysql数据库数据?
  7. python多版本共存 ubuntu_Linux下python3与python3的多版本共存
  8. 读书到底为了什么,读研到底值不值?
  9. 电子工程师,学会阅读Datasheet很重要!
  10. 找一份好工作真的很难?是的,很难。