2016-01-12 34 views
0

在我的WebAPI2應用程序中,我通過Owin中間件使用OAuth身份驗證。爲了得到令牌客戶端應該在請求中使用application/x-www-form-urlencoded正文。WebApi 2 + Owin在令牌請求中使用urlencoded body

function userAccount($resource, appSettings) { 
 
    return { 
 
     registration: $resource(appSettings.serverPath + "/api/Account/Register", null, 
 
       { 
 
        'registerUser' : { method : 'POST'} 
 
       } 
 
      ), 
 
     login : $resource(appSettings.serverPath + "/Token", null, 
 
       { 
 
        'loginUser': { 
 
         method: 'POST', 
 
         headers: { 
 
          'Content-Type' : 'application/x-www-form-urlencoded' 
 
         }, 
 
         transformRequest: function (data, headersGetter) { 
 
          var str = []; 
 
          for (var d in data) { 
 
           str.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d])); 
 
          } 
 
          return str.join("&"); 
 
         } 
 
        } 
 
       } 
 
      ) 
 
    } 
 
}

但是它有什麼可以覆蓋這種行爲JSON格式使用原始的身體的方法?而不是:「grant_type = password & username = user & password = 123456」想要使用這個:「{grant_type:」password「,username:」user「,password =」123456「}」。

欣賞任何建議。

回答

0

你可以在控制器中設置一個動作,作爲一個「代理」方法,它可以接受正文中的json,然後用url編碼參數調用內部方法。

+0

@sonicbils謝謝你的回答。舒爾這將做的伎倆,但認爲這仍然是一種解決方法。 –

+0

是的,但我很肯定,除非你自己實現,它是你唯一的選擇。 http://stackoverflow.com/questions/19645171/how-do-you-set-katana-project-to-allow-token-requests-in-json-format。 – sonicblis

相關問題