1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-webApi 与 Unity 注入 使用 Unity 是为了使用我们后台的 BLL 和 DAL 层
2:ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-WebApi 与 Unity 注入 - 配置文件
3:ASP.NET MVC5+EF6+EasyUI 后台管理系统(3)-MVC WebApi 用户验证 (1)
4:ASP.NET MVC5+EF6+EasyUI 后台管理系统(4)-MVC WebApi 用户验证 (2)
以往我们讲了 WebApi 的基础验证, 但是有新手经常来问我使用的方式
这次我们来分析一下代码的用法, 以及调试的方式
WebApi 在一些场景我们会用到, 比如:
1. 对接各种客户端(移动设备)
2. 构建常见的 http 微服务
3. 开放数据
4. 单点登陆 等...
本文主要演示几点: 主要也是对以往的回顾整理
1. 使用 HelpPage 文档
2.Postman 对接口进行调试(之前的样例太过简单, 这次加一些参数, 让初学者多看到这些场景)
3. 调试接口
1.HelpPage API 帮助文档
我们新建的 WebApi 集成了微软自带的 HelpPage, 即 API 的文档, 在我们编写好接口之后会自动生成一份文档
配置 HelpPage, 非常简单, 分两步
设置项目属性的输出 xml 文档
2. 打开 Areas-->HelpPage-->App_Start-->HelpPageConfig.cs
- public static void Register(HttpConfiguration config)
- {
- //// Uncomment the following to use the documentation from xml documentation file.
- config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/Apps.WebApi.xml")));
设置 Register 方法就行, 运行地址 localhost:1593/help 得到如下结果
从图中可以看出, 每一个控制器的接口都会列出来, 并根据注释和参数生成文档, 全自动
点击接口可以看到参数和请求方式
2. 使用 Postman 调试
下载地址: https://www.getpostman.com/ https://www.getpostman.com/
Pastman 非常易用, 我们下面就拿登陆接口来测试
打开 Postman, 新建一个请求
OK, 我们已经获得 token! 注意, 新建请求的时候, 要设置 GET,POST
3. 验证权限
之前的文章, 我们是通过令牌的方式 + 接口权限来访问接口数据的
打开 SupperFilter.cs 过滤器代码
- //url 获取 token
- var content = actionContext.Request.Properties[ConfigPara.MS_HttpContext] as HttpContextBase;
- var token = content.Request.QueryString[ConfigPara.Token];
- if (!string.IsNullOrEmpty(token))
- {
- // 解密用户 ticket, 并校验用户名密码是否匹配
- // 读取请求上下文中的 Controller,Action,Id
- var routes = new RouteCollection();
- RouteConfig.RegisterRoutes(routes);
- RouteData routeData = routes.GetRouteData(content);
- // 取出区域的控制器 Action,id
- string controller = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName;
- string action = actionContext.ActionDescriptor.ActionName;
- //URL 路径
- string filePath = HttpContext.Current.Request.FilePath;
- // 判断 token 是否有效
- if (!LoginUserManage.ValidateTicket(token))
- {
- HandleUnauthorizedRequest(actionContext);
- }
- // 判断是否角色组授权(如果不需要使用角色组授权可以注释掉这个方法, 这样就是登录用户都可以访问所有接口)
- if (!ValiddatePermission(token, controller, action, filePath))
- {
- HandleUnauthorizedRequest(actionContext);
- }
- // 已经登录, 有权限
- base.IsAuthorized(actionContext);
过滤器中会读取到用户传过来的 token 并进行 2 个逻辑验证
1. 验证 token 是否有效
2. 验证接口有没有权限 (通过后台分配权限来获取 Action) 这个操作跟我们授权界面是一样的
(注: 如果注释掉即所有登陆用户都可以访问所有接口, 不受控制, 主要看业务场景吧)
4. 通过 Token 向其他接口拿数据
看到 SysSampleController 类, 这个类和普通 MVC 里面的样例的接口其实没有什么区别, BLL 后的所有都是通用的, 所以逻辑就不需要重新写了! 按照第二点的获得 token, 配置到 Postman 可以获得数据
1. 查询
2. 创建
3. 修改
4. 获取明细
5. 删除
谢谢, 从源码直接可以看出, 和自己测试或者自己配置一遍, 不失是一种体验
来源: https://www.cnblogs.com/ymnets/p/9753209.html