我试图通过调用 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,您需要使用网络请求处理程序 http://msdn.microsoft.com/en-us/library/system.net.http.webrequesthandler.aspx随着HttpClient
。例如,
var handler = new WebRequestHandler();
var client = new HttpClient(handler);
// use handler to configure request such as add cookies to send to server
Cookie容器 http://msdn.microsoft.com/en-us/library/system.net.http.httpclienthandler.cookiecontainer.aspx属性将允许访问 cookie 集合。
另一方面,我怀疑是否创建表单验证客户端上的cookie将起作用。客户端/服务器都需要相同的加密密钥。最好的方法是重播实际 Web API 的登录请求 - 最有可能的是,这将是POST使用用户凭据登录页面。使用 Fiddler 等工具在浏览器上观察相同的情况,并在 http 客户端中构造相同的请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)