我的解决方案有两个项目:MyApp.WebApi
和MyApp.Web
。
MyApp.WebApi
包含返回所需ApiController
数据的所有Json
。它还有AccountController.Login
操作,应该返回TokenId
,还会自动在Cookie中设置TokrnId
。
[HttpGet]
public HttpResponseMessage Login(string username, string password)
{
var principal = // Some code to get the principal
var tokenId = principal.TicketId;
var resp = new HttpResponseMessage(HttpStatusCode.OK);
var cookie = new CookieHeaderValue("TokenId", tokenId)
{
Expires = DateTimeOffset.Now.AddDays(1),
Domain = this.Request.RequestUri.Host, Path = "/"
};
resp.Headers.AddCookies(new[] { cookie });
resp.Content = new StringContent(tokenId);
return resp;
}
使用浏览器可以正常工作。
但是当我在MyApp.Web
内使用时,$.getJSON
请求不会使用TokenId
Cookie发送请求。
$.getJSON(serviceAddress)
.done(function (result, status) {
// Do some logic
})
.fail(function (result, status) {
logger.logError(result);
});
问题1。如何通过HttpRequest
发送Cookie MyApp.Web
?
问题2。我希望我的Login方法返回string
而不是HttpResponseMessage
。但在这种情况下我不知道如何设置cookie,因为我无法直接访问返回的响应(例如resp
)