關於如何在休息時間進行身份驗證的聖戰,您可以使用表單身份驗證。如果您還使用來自同一站點/域的Web界面,並且您的身份驗證功能得到了充分考慮,則這非常方便和簡單。
你需要一個基類的API控制器
public class MyApiControllerBase : ApiController
{
public MySecurityContextType SecurityContext { get; set; }
}
一個ActionFilterAttribute
public class AuthenticationContextAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
MyApiControllerBase controller = actionContext.ControllerContext.Controller as MyApiControllerBase ;
if (controller != null)
{
var context = ((HttpContextBase)controller.Request.Properties["MS_HttpContext"]);
HttpCookie cookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
controller.SecurityContext= ParseFormsAuthenticationTicket(ticket);
}
}
}
和代碼首先創建了票。
LogIn(HttpRequestBase httpRequest, string userName, string password)
{
var context = DoLoginLogic(userName,password);
FormsAuthentication.SetAuthCookie(context, usePersistentCookies);
}
授權顯然需要在控制器方法中完成。
請參閱http://stackoverflow.com/questions/319530/restful-authentication – Yaur 2013-04-23 20:10:15