我相信我理解了sessionless /無狀態REST的基礎知識,但是我在Asp.Net Web Api 2中實現時遇到了問題,因爲我之前沒有使用它。我已經建立了像這樣使用自定義System.Web.Http.AuthorizeAttribute的ApiControllers。Web Api 2無狀態用戶
public class ApiAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.Headers.Authorization != null)
{
//Set identity??
return;
}
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
}
我有一個包含用戶數據庫,我需要用它們來獲得特權,GET/POST/PUT /刪除的東西,但不想使用一個會話。我從來沒有使用過asp.net身份,所以我不熟悉它的特性和功能。
我的實現想法是使用用戶憑據或api祕密簽名來驗證和獲取每個請求的用戶權限。問題是,通過使用AuthorizeAttribute或類似的東西,如果他們的憑證是正確的,那麼如何在一個請求期間向控制器發送用戶信息?
更新: 正在使用this.User(ApiController.User)會話基於或可以用於該單個請求。如果是這樣,那麼如何設置它
這似乎是一個極端的放置在restapi的每一條路線。在Web Api控制器中執行操作時,是基於會話的「this.User」還是可以爲該請求設置和使用 – Gekctek
您也可以選擇CustomPrincipal方法,將用戶數據包裹在主體中。 –