我已经创建了我的应用程序,并且我有一个应用程序控制器(基本控制器),我始终在其中强制进行身份验证。如果需要,我可以在任何派生控制器中覆盖它。我在这个控制器上有一个 [Authorize] 属性。
我刚刚开始创建从我的应用程序控制器派生的Api Base 控制器,以访问 Nhibernate Session、记录器等。
在我的应用程序中,我确保像这样设置 FormsAuthentication:
var cookie = FormsAuthentication.GetAuthCookie(Name, false);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var expiration = DateTime.Today.AddDays(5);
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, expiration,
ticket.IsPersistent, value.APIToken, ticket.CookiePath);
var encTicket = FormsAuthentication.Encrypt(newTicket);
cookie.Value = encTicket;
cookie.HttpOnly = true;
HttpContext.Current.Response.Cookies.Add(cookie);
我的 Api 需要同样的东西吗?理想情况下,我想通过标头或查询字符串提供的身份验证对每个请求的用户进行身份验证,例如
site.com/api/v1/projects?clientid=xxx&token=xxxxxxxxxxx
仅当我具有以下属性时,对我的 Api 控制器的请求才有效:[AllowAnonymous]
对我的 api 调用进行身份验证的最佳方法是什么?