1

我的解决方案有 2 个项目:MyApp.WebApiMyApp.Web.

MyApp.WebApi包含所有ApiController返回所需Json数据的s。它还有AccountController.Login应该返回的动作TokenId,也自动TokrnId在cookies中设置。

[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使用TokenIdcookie 发送请求。

$.getJSON(serviceAddress)
    .done(function (result, status) {
        // Do some logic
    })
    .fail(function (result, status) {
        logger.logError(result);

    });

问题1。我如何通过发送 cookie来制作HttpRequests ?MyApp.Web

问题2。我希望我的 Login 方法返回string而不是HttpResponseMessage. 但在那种情况下,我不知道如何设置 cookie,因为我无法直接访问返回的响应(例如resp

4

0 回答 0