我试图通过调用 FormsAuthentication.SetAuthCookie("someUser", false);
在集成测试内部进行身份验证
之后,我确实需要调用 WebAPI 并且不会收到未经授权的异常,因为我已经应用了授权属性。
我正在使用此代码来创建身份验证 cookie:
var cookie = FormsAuthentication.GetAuthCookie(name, rememberMe);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration,
ticket.IsPersistent, userData.ToJson(), ticket.CookiePath);
var encTicket = FormsAuthentication.Encrypt(newTicket);
/// Use existing cookie. Could create new one but would have to copy settings over...
cookie.Value = encTicket;
现在我想将此 cookie 添加到新 HttpClient 内的 HttpRequestMessage 中,并在集成测试中与我的常规请求一起发送。
我不知道如何将该身份验证 cookie 添加到 HttpRequestMessage ?
最佳答案
要操作cookie,您需要使用WebRequestHandler与HttpClient
一起。例如,
var handler = new WebRequestHandler();
var client = new HttpClient(handler);
// use handler to configure request such as add cookies to send to server
CookieContainer属性将允许访问 cookie 集合。
另一方面,我怀疑在客户端上创建 FormsAuthentication cookie 是否有效。客户端/服务器都需要相同的加密 key 。最好的方法是重播实际 Web API 的登录请求 - 最有可能的是,它是使用用户凭据登录页面的POST。使用 Fiddler 等工具在浏览器上观察相同的情况,并在您的 http 客户端中构造相同的请求。
关于asp.net - 如何将 FormsAuthentication cookie 添加到 HttpClient HttpRequestMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13642466/