自己做网站挣钱吗,南宁云尚网络有限公司,wordpress评论cdn刷新,网站添加百度地图导航对于webapi服务应用很多时候需要制订访问限制#xff0c;在前面的章节也讲述了组件如何制订控制器访问控制#xff1b;但到了实际应用要自己去编写还是比较麻烦。为了让访问控制更方便组件实现基于JWT的控制器访问控制组件BeetleX.FastHttpApi.Jwt#xff1b;通过这个组件可… 对于webapi服务应用很多时候需要制订访问限制在前面的章节也讲述了组件如何制订控制器访问控制但到了实际应用要自己去编写还是比较麻烦。为了让访问控制更方便组件实现基于JWT的控制器访问控制组件BeetleX.FastHttpApi.Jwt通过这个组件可以轻易地集成访问控制功能。配置 先需要引用BeetleX.FastHttpApi.Jwt扩展组件然后针对HttpApiServer调用UseJWT扩展方法即可。 static void Main(string[] args) { HttpApiServer server new HttpApiServer(); server.Register(typeof(Program).Assembly); server.Options.Port 80; server.Options.LogLevel EventArgs.LogType.Info; server.Options.LogToConsole true; server.Options.SSL true; server.Options.CertificateFile ssl.pfx; server.Options.CertificatePassword 123456; server.UseJWT(); server.Open(); System.Threading.Thread.Sleep(-1); }当配置了JWT访问控制后所有请求的api都会返回401错误使用 组件提供了AuthMark用于标记控制器的针对JWT的验证情况默认不标记的方法请求时都必须在Cookie:__beetlex_token或Header:Authorization中提供合法的JWT凭证信息。如果想某个方法不参与验证可以标记上[AuthMark(AuthMarkType.NoValidation)]。[Controller]class Webapi{ [AuthMark(AuthMarkType.Admin)] public object ListEmployee(string jwt_user, string jwt_role, IHttpContext context) { context.Server.Log(EventArgs.LogType.Warring, context.Session, ${jwt_user}[{jwt_role}]); return Northwind.Data.DataHelper.Defalut.Employees; } public object List(string jwt_user, string jwt_role, IHttpContext context) { context.Server.Log(EventArgs.LogType.Warring, context.Session, ${jwt_user}[{jwt_role}]); return Northwind.Data.DataHelper.Defalut.Customers; } [AuthMark(AuthMarkType.NoValidation)] public string Login(string name, string pwd, IHttpContext context) { string result; if (name admin) { result context.SetAdminJwtToken(name); } else { result context.SetJwtToken(name, user); } return result; }}以上控制器有三个方法Login该方法是把登陆信息写入Cookie并返回此方法标记了 [AuthMark(AuthMarkType.Admin)]因此无须提供JWT凭证即可访问。ListEmployee该方法需要凭证访问并明确凭证中的角色是admin.List 该方法需要提供凭证访问在访问的时候需可以通过访问Login来获取凭证如果是网页请求则无须返回SetJwtToken方法会把凭证写到Cookie中接下来的请求会通过Cookie传递到服务处理。如果是其他途径访问则需要把凭证设置到Header部的Authorization中不管是那种方式提供凭证组件都能兼容处理。 当凭证有效的情况组件会把jwt_user和jwt_role注入到数据上下文中这两个信息分别是JWT凭证中用户和角色如果有需要直接在参数中定义相关变量名称即可获取。Postman调用测试获取凭证调用方法返回了凭证信息.接下来通过该凭证再调用List方法调用List由于服务端输出了Cookie,Postman也记录下来所以接下来的请求是有效通过的。但之前登陆的并不是admin用户在这个cookie请求是无法访问ListEmployee的。由于角色不是admin因此访问ListEmployee会返回401错误。接下来使用admin用户登陆一次就可以正常访问ListEmployee方法了.修改配置 使用插件后会在程序中生成beetlex_jwtconfig.json文件{ Issuer: null, Audience: null, JWTKeyED: m60IIS4DQR8K9eh0gjrlJPFvB042RyGhtS2jOHjSzyx4T7dZVBCAm51k9fTEC1Ux066AH198KQgZpZh4Ejmda7/DKDi9Dg7quwkU85jmUADnEqGM7vOl8TOO16HrtUfoABVxQ60Tt92RGRjV8VJthxYdIX/B7XjMGTsJLjpo}以上信息在初始化的时候随机生成可以根据自己需求进行更改。下载示例链接https://pan.baidu.com/s/1ZP600HkfBc57O0gtv7npVA提取码3oik【BeetleX通讯框架代码详解】BeetleX开源跨平台通讯框架(支持TLS)轻松实现高性能:tcp、http、websocket、redis、rpc和网关等服务应用https://beetlex.io如果你想了解某方面的知识或文章可以把想法发送到henryfanmsn.com|adminbeetlex.io