2012-10-20 79 views

回答

2

您示例中的用戶名和密碼使用HTTP基本驗證 - 它們不是URL的一部分,而是包含在標題信息中。您可以訪問ASP.NET中的此信息,請參閱此文章:Basic Authentication with Asp.Net WebAPI

public class BasicAuthenticationAttribute : System.Web.Http.Filters.ActionFilterAttribute { 
    public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) { 
     if (actionContext.Request.Headers.Authorization == null){ 
      // No Header Auth Info 
      actionContext.Response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized); 
     } else { 
      // Get the auth token 
      string authToken = actionContext.Request.Headers.Authorization.Parameter; 
      // Decode the token from BASE64 
      string decodedToken = Encoding.UTF8.GetString(Convert.FromBase64String(authToken)); 

      // Extract username and password from decoded token 
      string username = decodedToken.Substring(0, decodedToken.IndexOf(":")); 
      string password = decodedToken.Substring(decodedToken.IndexOf(":") + 1); 
     } 
    } 
} 
+0

這可能是一個愚蠢的問題。但是什麼時候OnActionExecuting火災? – Tom

+0

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.onactionexecuting(v=vs.98).aspx - 它由Controller類中的每個Action方法調用。我的ASP.NET知識有點過時了,雖然我在很長一段時間裏還沒有用過它...... – doublesharp