我在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);
};
答案 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) });
我希望有帮助