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/
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.刪除
謝謝,從源碼直接可以看出,和自己測試或者自己配置一遍,不失是一種體驗