前言

对于.NET大家并不陌生,有大批的企业选择.NET作为公司构建多种应用的开发平台,但是近几年随着微服务,大数据,移动端,物联网兴起,而后.NET社区生态没有跟上时代的步伐,已开始趋于没落,而其中最具代表的微服务,能够提供多种业务场景的解决方案的只有surging ,而surging 最近几年也在不断推动发展,预计明年将升级成为微服务平台,在这之前会在公司的重点项目中使用surging ,以便推出给大家带来稳定,高效的微服务平台,大家如果要得到最新的消息可以添加群:21811617,此群请不要涉及政治,暴力,因为有些人玩不起。多聊技术,积极向上开心的事情,以下是介绍最新的微服务平台功能

过滤器

框架中有AuthorizationFilter,ExceptionFilter,ActionFilter,而ActionFilter是最近新添加的功能,此功能可以用来做权限,创建ActionFilter过滤器如下:

 public class PermissionAttribute : BaseActionFilterAttribute
{
private readonly ISerializer<string> _serializer;
public PermissionAttribute()
{
_serializer = ServiceLocator.Current.Resolve<ISerializer<string>>();
}
public override Task OnActionExecutingAsync(ServiceRouteContext actionExecutedContext, CancellationToken cancellationToken)
{
var payload= RpcContext.GetContext().GetAttachment("payload");
var model= _serializer.Deserialize(payload.ToString().Trim('"').Replace("\\",""),typeof(UserModel));
// actionExecutedContext.ResultMessage.ExceptionMessage = "权限不足";//通过ExceptionMessage 来控制过滤
return Task.FromResult(model);
}
}

添加注入到引擎中,添加模块配置:

   public class IntercepteModule : SystemModule
{
public override void Initialize(AppModuleContext context)
{
base.Initialize(context);
} /// <summary>
/// Inject dependent third-party components
/// </summary>
/// <param name="builder"></param>
protected override void RegisterBuilder(ContainerBuilderWrapper builder)
{
base.RegisterBuilder(builder);
builder.AddClientIntercepted(typeof(CacheProviderInterceptor));
builder.AddFilter(typeof(PermissionAttribute));
//builder.AddClientIntercepted(typeof(LogProviderInterceptor));
}
}

然后可以在接口方法中添加Permission特性

    [Authorization(AuthType = AuthorizationType.JWT)]
[Permission]
[HttpPost(true),HttpPut(true)]
Task<IdentityUser> Save(IdentityUser requestData);

也可以在接口上添加Permission特性

    [ServiceBundle("api/{Service}/{Method}")]
[Permission]
//[ServiceBundle("api/{Service}")]
//[ServiceBundle("api/{Service}/{Method}/test")]
//[ServiceBundle("api/{Service}/{Method}/test",false)]
public interface IUserService: IServiceKey
{
[Authorization(AuthType = AuthorizationType.JWT)]
[Permission]
[HttpPost(true),HttpPut(true)]
Task<IdentityUser> Save(IdentityUser requestData);
}

不登陆调用会看到如下错误信息:

然后从RpcContext.GetContext().GetAttachment("payload")代码中的jwt token 的payload 可以获取信息,断点测试如下:

链路跟踪

链路跟踪采用的是skywalking 6.0 , 而最新的已经升级到8.0, 可以看surging支持的skywalking 8.0:

平台可视化界面

总结

surging 支持的国标28181,rtmp,httpflv,ws,mqtt,rtsp就不过多介绍了,后续surging微服务平台 会更新到https://github.com/microsurging,请大家关注

最新文章

  1. ubuntu 下安装scrapy
  2. Java中Eclipse的使用
  3. 一个人独立开发 3D 游戏引擎可能吗?
  4. 2016弱校联盟十一专场10.3---Similarity of Subtrees(深搜+hash、映射)
  5. ahjesus 捕获entity framework生成的sql语句
  6. (四)学习MVC之修改个人资料和身份验证登陆
  7. 使用Fiddler抓取手机上的数据包
  8. Linux 软件源设置
  9. Python3基础 使用 in notin 查询一个字符是否指定字典的键或者值
  10. 使用mui框架----移动端页面在所有屏幕下自适应
  11. ES6随手学
  12. 免费下载获取Odoo中文开发 指南 手册
  13. 说一说js中的闭包
  14. virt-install详解
  15. MATLAB 简明教程
  16. Python3基础 file for+文件指针 读取txt文本并 一行一行的输出(高效率)
  17. HDU2256&amp;&amp;HDU4565:给一个式子的求第n项的矩阵快速幂
  18. 【带权并查集】Gym - 100923H - Por Costel and the Match
  19. window.top.location
  20. CSS改变placeholder的颜色

热门文章

  1. MySQL 启停过程了解一二
  2. 052_末晨曦Vue技术_处理边界情况之程序化的事件侦听器
  3. Hnoi2014世界树
  4. 【java】学习路线1-类型转换、隐式转换、强制转换
  5. DIN 66025标准下G Code基础代码释义
  6. bat-CSV文件转MD文件
  7. 第十三篇:axios网络通信
  8. cmake 入门笔记
  9. Docker安装Redis并使用Another Redis Desktop Manager连接
  10. 使用Pipeline抽象业务生命周期流程