2016-10-21 14 views
0

我需要一個RESTful API,我可以從MVC5 Web應用程序調用最初只對本地sql server進行簡單認證/授權。我需要能夠將登錄憑證從Web應用程序傳遞到API以獲取標頭令牌等。然後,我需要能夠檢查令牌以獲取將數據提取或將數據保存回數據庫的任何請求。我現在正在使用教程示例應用程序Here,直到我瞭解功能。REST api數據層的Web應用程序

網絡側僅僅是一個按鈕和一些jQuery來捕捉提交按鈕的形式被點擊:

$(document).ready(function() { 

    var register = function() { 
     var dataa = { 
      Email: "[email protected]", 
      Password: "password", 
      ConfirmPassword: "password" 
     }; 

     $.ajax({ 
      type: 'POST', 
      url: 'api/Account/Register', 
      contentType: 'application/json; charset=utf-8', 
      data: JSON.stringify(dataa) 
     }); 
     return false; 
    } 

    $('#btnRegister').click(register); 
}); 

,然後這裏是API本身的控制器:

[Authorize] 
[RoutePrefix("api/Account")] 
public class AccountController : ApiController 
{ 
    [AllowAnonymous] 
    [Route("Register")] 
    public async Task<IHttpActionResult> Register(RegisterBindingModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     var user = new ApplicationUser() { UserName = model.Email, Email = model.Email }; 

     IdentityResult result = await UserManager.CreateAsync(user, model.Password); 

     if (!result.Succeeded) 
     { 
      return GetErrorResult(result); 
     } 

     return Ok(); 
    } 
} 

當我嘗試點擊它時,它現在給我一個404錯誤。

+0

通過啓用Web API,MVC和身份驗證(個人用戶帳戶)爲Visuat Studio創建Web應用程序,可以爲您提供基本上所有內容的項目,這是一個很好的起點。 Web上有很多關於Web API和Web API安全性的教程。除此之外,您的問題太寬泛無法回答,您需要專注於哪些不適合您。 – infiniteRefactor

+0

所以我的問題是我創建一個新的Web API與個人用戶帳戶,它有所有設置,但我很努力瞭解如何使簡單的登錄頁面,將用戶名/密碼傳遞到該API。我發現的教程似乎有助於面向網絡應用程序或api的身份驗證,但不一定是兩者之間的連接。對我而言,這只是我需要更好地理解這些概念,這就是爲什麼我把它留給含糊不清,我不知道要問的正確問題。 –

+0

堆棧溢出不是真的意味着提供教程(也不指向教程的鏈接)。這實際上更多的是關於代碼的幫助。如果你已經足夠遠以至於你有共享的代碼,那可能是最好的路線。 –

回答

2

WebAPI上的身份驗證基於基於令牌的OAuth身份驗證。

有一個認證URL(/默認創建的項目的令牌),當您使用用戶名和密碼對該URL進行POST請求時,您會得到一個令牌作爲響應。您的客戶端應用程序應該存儲此令牌並將其附加到每個請求以獲得授權。

底層的這個令牌生成和令牌識別過程是由附加到你的應用程序管道的OWin組件提供的。你可以學習StartUp.Auth.cs來初始化這些組件。

您的登錄表單沒有什麼特別之處。它只會將用戶名和密碼發送到認證URL。

如何在客戶端存儲令牌可能因您的設計而異。存儲令牌的最佳方式是使用cookie中的cookie或特定的令牌存儲。

您可以查看this tutorial的示例和基礎知識的討論。

+0

因此,我已經爲該教程加載了示例應用程序,但它都在1個項目中,對於我的目的我需要api和Web應用程序分開。所以我添加了一個新的項目到解決方案,並複製到家庭控制器和索引視圖,但它使用 –

+0

那麼我該如何改變它來擊中api? –

相關問題