2015-09-25 65 views
0

我有一個ASP.net應用程序,它提供了大部分的主界面,但後來主要由JavaScript驅動,因爲它主要是基於選項卡的應用程序,它通過Web API檢索數據並更改Div內容。Web API會話

這將是一個基於雲的解決方案,因此多個客戶連接並將數據存儲在他們自己的數據庫中。

現在我想確保Web API的安全性有兩個原因。

  1. 安全性,因此它知道誰應該訪問什麼數據
  2. 訪問,因此它知道它應該連接到

該數據庫目前,我處理我自己的身份驗證與我自己用戶和組的表格。

處理Web API方面的最佳方式是什麼?

我想在登錄時存儲一個Active Users表的唯一會話ID,然後在調用Web API時這個token/id作爲參數傳遞,然後Web API檢查這個token是否存在於Active用戶表,如果是這樣,則檢索用戶/組的權限,並檢查它應該連接到哪個數據庫。

這聽起來像是會起作用,還是有更好的方法可以忽略?

謝謝

+0

看起來你正在嘗試重塑[ASP.Net Identity](http://www.asp.net/identity/overview/getting-started)框架。 –

回答

0

我會在WebApi配置中添加認證過濾器,並在Web API方法中添加Authorize屬性。爲了訪問用戶會話,你可以使用下面的代碼。

protected void Application_PostAuthorizeRequest() 
    { 
     if(IsWebAPIRequest()) 
     { 
      HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); 
     } 
    } 

    private bool IsWebAPIRequest() 
    { 
     return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith("~/api"); 
    } 

根據用戶的會話ID,您可以選擇要連接的數據庫。