BeetleX.FastHttpApi之JWT和自定义访问验证

        BeetleX.FastHttpApi.Jwt组件是BeetleX.FastHttpApi的JWT安全验证插件,通组件的简单配置即可以实现对webapi进行安全访问控制。接下来介绍如何使用这组件并和其他自定义验证兼容。

使用

        本示例需要引用两个组件分别是:BeetleX.FastHttpApi.Hosting和BeetleX.FastHttpApi.Jwt。前者是简单托管服务构建,后者则是JWT验证。引用组件后可以在main访问编写以下代码

class Program
{static void Main(string[] args){var builder = new HostBuilder().ConfigureServices((hostContext, services) =>{services.UseBeetlexHttp(o =>{o.LogToConsole = true;o.LogLevel = BeetleX.EventArgs.LogType.Warring;o.Port = 80;o.SetDebug();},(http) =>{http.UseJWT();},typeof(Program).Assembly);});builder.Build().Run();}
}

通过HttpApiServer对象的UseJWT方法开启相关验证,当开户后所有控制器访问都必须获取JWT许可(包括cookie或头部Authorization包括相关凭证)。

控制器

        当开启JWT后默认情况下控制器所有方法都需要经过验证,但可以通过组件提供的Attribute来更改相关验证方式。

    [Controller]public class Home{[AuthMark(AuthMarkType.NoValidation)]public bool Login(string name, string pwd, IHttpContext context){var result = (name == "admin" && pwd == "123456");if (result)context.SetAdminJwtToken(name);return result;}[AuthMark(AuthMarkType.Admin)]public object List(){return Northwind.Data.DataHelper.Defalut.Employees;}}

可以通过[AuthMark(AuthMarkType.NoValidation)]标记方法或整个API不进行验证处理。还可以通过 [AuthMark(AuthMarkType.Admin)]来标记方法访问的角色必须是admin。以上代码是把Login标记为不需要验证,然后在方法中调用SetAdminJwtToken或SetJwtToken方法来设置当前会话的登陆凭证。

其他验证

        有时候希望个别API兼容其他验证方式,这个时候可以在UseJWT转入一个处理函数。

http.UseJWT((o, e) =>
{var token = e.HttpContext.Data["token"];if (token != null){if (token == "admin"){e.Success();}else{e.Failure("当前凭证无效!");}}
});

可以在方法中调用Success或Failure来告诉组件自定义验证情况,如果这两个方法都不调用的情况下会路由回默认的JWT验证。

完整示例 

https://github.com/beetlex-io/BeetleX-Samples/tree/master/Web.JWT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(收藏)C#开源资源大汇总

一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发 人员提高开发效率。 NKalore是一款编程语言&a…

一个漫长的程序人生路程,如何突破5000元大关?几年前的2-3线城市的参考,现在未必...

我是2000年参加工作的,第一年在宁波一所大学当老师,当时工资可能只有2K不到,由于我上大学时也经常给别人兼职打工,平均下来也能赚个每个月2K,问题不严重。本来计划是在大学一边当老师,一边在市区找找活儿干…

变态公式之如何算出圆的内部被切割成几块?

来来来赶紧拿纸笔出来一起算一个单位圆圆周上均匀分布 n 个点,互相连接,这个圆的内部会被分割为多少块?答案高能预警:来,我们来找规律,大家拿出纸和笔。前三个很简单,1,2,4,所以猜测…

qq截图工具提取_QQ截图隐藏的这些简单又实用的技能,怪我没早告诉你

自从有了微信,很多人逐渐习惯并适应微信办公、学习,远离 QQ。实际上,QQ 后面做了不少实用且高效得功能,往往容易被人忽略,例如强大的截图功能,具体好用在哪呢?看完下面的内容就知道了。01. 精准…

java io类库,Java利用io类库对各种文件的操作详解

Java中文网 - Java利用io类库对各种文件的操作详解java中提供了io类库,可以轻松的用java实现对文件的各种操作。下面就来说一下如何用java来实现这些操作。新建目录//String URL request.getRequestURI();String filePath"C:\\测试\\";filePathfilePath.…

合集 | 我在传统行业做数字化转型

在过去的两年时间里,Edison加入了一家传统行业的家装企业参与了其从0到1的数字化转型的过程,我将其整个过程中的感受与体会记录成了一些文章,分享与你。1我在传统行业做数字化转型(1)预告篇这篇主要会介绍一下数字化转…

第十周项目1-程序填空与阅读(一)

问题1-阅读下面的程序,在____上填上合适的成份,使程序能够输入“12”形式的式子,并输出相应的结果。 输入switch(oper) /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称:temp.cpp*作者:邵帅*完…

有关EnableQ在线问卷调查引擎的记者访谈记录

经过近2年来的持续努力,EnableQ已经成为在线调查问卷领域的国内领导品牌。今EnableQ核心开发团队接受记者访问,以下是访谈的部分记录。记者:当初出于什么想法要开发像EnableQ这样专业的软件产品?是因为什么契机,还是有…

33种化学原理动图, 让你秒懂化学反应原理!

全世界只有3.14 % 的人关注了爆炸吧知识化学的神奇魅力可是不是随便说说的,神奇起来让人叹为观止。下面37张动图,在带领你领略化学之美的同时,也希望能帮助你理解这些化学现象。1 . 硫氰酸汞分解(“法老之蛇”)原理&am…

sql 计算 某字段 不同值出现 的次数_教你如何合理选用和计算电线规格,电线回路分配和注意事项...

电工是装修中非常重要的隐藏工程,其涉及的每一个细节都是不容忽视的,选用电线更是责任重大,如果使用的电线配置不合理或者用劣质电线,就存在发生电气火灾的隐患。因此,根据不同场所要进行合理选择和使用。一&#xff1…

c# 计算地球上两点间距离

地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离。获取…

matlab自带kpca,求对矩阵进行PCA或者KPCA特征提取的matlab代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是gabor的代码imimread(G:\pictureROI\why1.jpg);A[];B[];%A,B是空矩阵,初始化,清零。scale5; % denote the scale of the gabor wavelet表示gabor小波的尺度orientation4; % denote the orientation of t…

net读取exchange数据

大部分的参考是来自MSDN: http://msdn.microsoft.com/en-us/library/exchangewebservices(EXCHG.80).aspx 2007版的Exchange服务器提供了webservice,我们可以方便的在.NET程序中添加该引用,然后就可以方便的实现邮件的抓取,发送…

第十周项目1-程序填充与阅读(三)

/**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称&#xff1a;temp.cpp*作者&#xff1a;邵帅*完成时间&#xff1a;2014年10月30日*版本号&#xff1a;v1.0 */ #include <iostream> #include <cstdio> using namespace std; int main( ) {…

20以内究竟包不包括20?

全世界只有3.14 % 的人关注了爆炸吧知识本文转载自微信公众号一只学霸&#xff08;ID&#xff1a;bajie203&#xff09;学霸今天要问你们一个问题起初我看到微博上讨论这个的时候我觉得这个问题挺智障的然后点开评论一看……Wtf居然两个评论完全相反&#xff1f;&#xff1f;再…

MySql优化 (2009-08-28 系统架构师大会) 演讲ppt

在线查看地址 http://www.slideshare.net/secret/IzjEa4qGWlMeLH

python3默认的代码编码是什么-Python3 到底什么是字符编码

我之前老是有这种感觉, 就是明明已经看过很多关于字符编码的资料了, 感觉字符编码相关的知识点不难理解, 觉得自己已经把字符编码给弄懂了, 但当别人问我到底什么是字符编码, Unicode是什么啊, UTF-8又是什么的时候, 我又结结巴巴的说不清楚, 或者只能给个含糊不清的回答, 老是…

matlab生成有向网络,matlab ode45和矩阵生成有向网络图

Matlab中解常微分方程的ode45ode是专门用于解微分方程的功能函数&#xff0c;他有ode23,ode45,ode23s等等&#xff0c;采用的是Runge-Kutta算法。ode45表示采用四阶&#xff0c;五阶runge-kutta单步算法,截断误差为(Δx)^3。解决的是Nonstiff(非刚性)的常微分方程.是解决数值解…

一篇文章带你分清楚JWT,JWS与JWE

随着移动互联网的兴起&#xff0c;传统基于session/cookie的web网站认证方式转变为了基于OAuth2等开放授权协议的单点登录模式&#xff08;SSO&#xff09;&#xff0c;相应的基于服务器session浏览器cookie的Auth手段也发生了转变&#xff0c;Json Web Token出现成为了当前的热…

VMware linux 在2.4.20-8 中编译2.6.15.5 内核

软件准备&#xff1a; gcc-3.2.2-5.i386.rpm &#xff1a;用来编译 ncurses-5.6.tar.gz&#xff1a;用来配合make menuconfig 命令配置内核 bison-2.4.tar.gz &#xff1a;语法解析器 flex-2.5.35.tar.bz2 &#xff1a;词法解析器 m4-1.4.9.tar.gz&#xff1a; modutils-2.4.…