访问/设置Angular Cookie以与ServiceStack交互

时间:2013-12-02 11:39:26

标签: angularjs cookies servicestack

我在Windows Auth环境中工作,并在Angular中创建了一个Cookie来保存当前登录用户的全名:

returnsApp.run(["$cookies", "UserService", function($cookies, userService) {
    userService.getUser().then(function(user) {
        $cookies["ss-id"] = user.data.result.fullName;    
        console.log($cookies["ss-id"]); // Outputs: BiffBaffBoff (correct!)
    });
}]);

然后,当我尝试在服务器上访问此cookie时,在我的服务中(如果有帮助,它托管在不同的服务器上?),cookie为空:

Cookie cookie;
Request.Cookies.TryGetValue(SessionFeature.SessionId, out cookie);
if (cookie == null)
    throw new ArgumentException("User not found!");

我认为我错过了一个步骤,也许在我拨打服务电话时将这个cookie值传递到标题中?仅供参考,以下是我如何进行服务电话:

var createReturn = function (returnObj) {
    return $http.post(url, returnObj);
};

1 个答案:

答案 0 :(得分:2)

类似的事情发生在我身上,但另一方面,在服务器中设置一个cookie,当我尝试在客户端读取它总是null时,我认为你需要配置SS才能创建非HttpOnly cookie

尝试将此设置放入主机配置中:

Config.AllowNonHttpOnlyCookies = true;

到目前为止,我知道你想访问一个OOB auth cookie,我不太确定该cookie是否仅在服务器端可用,如果是这种情况尝试创建另一个cookie,其中包含你想要共享的信息服务器中的客户端并设置HttpOnly = false,这对我有用,它就是这样的:

var resp =service.RequestContext.Get<IHttpResponse>();
resp.Cookies.AddCookie(new Cookie { Name = "r", Path = "/", Value = "from server", HttpOnly = false, Discard = false, Expires = DateTime.Now.AddHours(12) });

我希望有帮助