2013-10-10 20 views
0

作爲身份驗證機制,可以給出持續時間有限的令牌。記錄在用戶的會話中以及與用戶一起工作的過程中檢查網站的有效性。最後只需提供用戶再次登錄。 可能會建議這個方案是正確的嗎? 是否有類似的解決方案登錄使用天藍色的stodge?使用天藍色存儲器對網站(MVC4)進行身份驗證

回答

0

對於令牌身份驗證,您最好使用OAuth或OAuth2。它完全符合你的要求,但你可以創建一個動作過濾器來實現相同的功能。

下面是一個帶有WebApi控制器的示例,它很容易切換到mvc控制器。基本上你不會有一個http頭中的標記,但在查詢字符串中。

[AuthKey] 
public class PurchaseController : ApiController 
{ 
    //methods 
} 

public class AuthKeyAttribute : ActionFilterAttribute 
{   
    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     if (actionContext.Request.Headers.Contains("auth-key") == false) 
      actionContext.Response = new System.Net.Http.HttpResponseMessage(HttpStatusCode.Unauthorized); 
     else 
     { 
      var token = actionContext.Request.Headers.GetValues("auth-key").First(); 

      var sessionServices = new SessionServices(); 
      var session = sessionServices.SearchSessionByAuthKey(token); 

      if (session == null || session.expirationDate < DateTime.Now) 
      { 
       actionContext.Response = new System.Net.Http.HttpResponseMessage(HttpStatusCode.Unauthorized); 
       return; 
      } 

      var controller = actionContext.ControllerContext.Controller; 

      if (controller is BaseController) 
      { 
       var baseController = (BaseController)controller; 
       baseController.SetThreadLocalSession(session); 
      } 

      base.OnActionExecuting(actionContext); 
     } 
    } 
} 
相關問題