在 Web.Config 中设置 ServiceStack Cookie 域会导致会话 ID 在每次请求时发生更改

2023-12-01

As per ServiceStack - 域和子域的身份验证,我在 httpCookies 部分中设置了 cookie 域,它实际上有效 - 它正确设置了 cookie 的域。

但我注意到,一旦我将此行添加到配置中,每个请求都会生成一个新的会话 ID,无论用户是否已经通过身份验证。

我的代码很简单。

我的应用程序主机代码:

public override void Configure(Funq.Container container)
{
        Plugins.Add(new AuthFeature(() => new CustomUserSession(),
            new IAuthProvider[] {        
                    new CustomCredentialsProvider(), 
                }));

        container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("10.211.55.2:6379"));
        container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient());

        var userRep = new InMemoryAuthRepository();
        container.Register<IUserAuthRepository>(userRep);
}

我的自定义凭据提供商:

public class CustomCredentialsProvider : CredentialsAuthProvider
{
    public override bool TryAuthenticate(ServiceStack.IServiceBase authService, string userName, string password)
    {
        return true;
    }

    public override void OnAuthenticated(ServiceStack.IServiceBase authService, IAuthSession session, IAuthTokens tokens, Dictionary<string, string> authInfo)
    {
        session.UserAuthName = "test user";
        session.UserName = "test user";

        authService.SaveSession(session);
    } 
}

我的默认页面:

public partial class _Default : WebForms.App_Start.PageBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //get session information in every way possible
            var session = this.UserSession;

            var sessionKey = SessionFeature.GetSessionKey();

            var session2 = SessionFeature.GetOrCreateSession<CustomUserSession>(this.Cache);

            var session3 = this.Cache.Get<CustomUserSession>(sessionKey);        

        }

上面的 sessionKey 将被发出,并且在每次请求时都保持不变(这是预期的)。添加:

<system.web>
  <httpCookies domain="localhost"/>

导致每次请求时sessionKey都不同;几乎就像 cookie 立即过期一样。将域名更改为“test.com”或“.test.com”之类的内容似乎没有什么区别。为了更好的测量,我将 127.0.0.1 localhost 和 127.0.0.1 test.com 添加到我的 Windows 主机文件中。

同样,注释掉 httpCookies 行和会话 ID 保持不变,即使在进行身份验证后也是如此。添加以上行会导致会话在每次请求时发生更改,无论是否进行身份验证。

正在设置 Cookie,并在每次请求时使用新的会话 ID 来设置它们。

我可能做错了什么以及我应该在哪里覆盖这种行为?任何帮助表示赞赏。


这看起来不像是 ServiceStack 问题,而是您的浏览器不接受返回的 cookie 的问题,因为您的测试域是无效的选择。

localhost不是有效的 cookie 域:

您不应该将域设置为localhost,因为这不是有效的 cookie 域。要使 cookie 域被视为有效,它必须具有.在里面。因此,当使用 localhost 时,域值必须是null.

IP 地址不是有效的 cookie 域:

您不能使用 IP 地址作为 cookie 域。所以设置127.0.0.1可以被浏览器认为无效。

主机文件:

你说你设置test.com指向127.0.0.1在你的主机文件中。假设您的 ServiceStack 服务正在监听环回地址,那么域test.com应该适用于该服务,但您必须在配置中反映这一点,即

<system.web>
    <httpCookies domain="test.com"/>

您也可以直接在 AppHost 中进行配置Configure method:

public override void Configure(Container container)
{
    Config = new HostConfig {
        RestrictAllCookiesToDomain = "test.com",
    };
}

如果 ServiceStack 正确设置了 cookie,正如您所说的那样,那么问题就出在浏览器不接受 cookie 上。您可以通过检查浏览器随请求发送的 cookie 来确认这一点。如果您没有看到随下一个请求发回的 cookie,则浏览器没有接受它们。您必须确保您提出的请求来自http://test.com而不是来自localhost or 127.0.0.1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Web.Config 中设置 ServiceStack Cookie 域会导致会话 ID 在每次请求时发生更改 的相关文章

  • 在极少数情况下,重定向到 ACS 并返回后 Cookie 为空

    我的网站上有一份注册表 填写完毕后 用户将被重定向到 Azure ACS 以便登录 登录后 用户将被重定向回我的网站并进行注册和登录 注册表单由 JavaScript 提交 用户填写的信息通过 RegisterController 中的 R
  • Mono 3.0、Ubuntu 12.10、Nginx 和 ServiceStack

    根据 ServiceStack 网站的说法 使用 Mono 在 Linux 上启动和运行 ServiceStack 应该很容易 我已经在系统 Ubuntu 12 10 上安装了 nginx mono 3 0 和 fastcgi 我用过thi
  • 特殊字符被 tomcat cookie 解析器拒绝

    当我尝试将 cookie 从 android 代码发送到服务器端代码时 cookie 解析器不接受值字段中的 字符 即 tomcat 的 cookie 解析器在将 mime 标头解析为 cookie 时拒绝此字符 我尝试使用其他特殊字符代替
  • Rails 渲染 JSON - 会话丢失?

    我正在尝试对控制器进行一些 Ajax 调用 该控制器以 JSON 进行响应 if session user render json gt Some Data else render json gt You are not logged in
  • 检查Cookie是否存在

    从快速搜索开始堆栈溢出我看到有人建议使用以下方法来检查 cookie 是否存在 HttpContext Current Response Cookies cookie name null 或 在一个Page class this Respo
  • 如何使用 ServiceStack 成功删除时返回 HTTP 204 响应

    我在使用 ServiceStack 返回没有正文的 HTTP 204 时遇到问题 如果我回来 return new HttpResult StatusCode HttpStatusCode NoContent 第一次它工作正常 但重复调用将
  • 使用 JavaScript 禁用第三方 cookie

    我正在努力根据所有在欧盟运营的公司的数据保护规则实施新的 Cookie 政策合规性 根据该规则 用户在使用任何网站时必须能够拒绝 接受除必需的 Cookie 之外的所有内容 在我客户的网站中 我可以看到正在存储以下第三方 cookie ga
  • 使用 servicestack 提供静态文件

    我将如何使用 servicestack 提供静态文件 我想添加像 Routes Add app 这样的路由 当客户端为此路径发出 GET 时 我需要返回 silverlight xap 文件 ServiceStack 已经能够通过直接引用静
  • ANDROID:Webview 和 httpclient 之间共享会话

    我的 WebView 中实际上有一个记录的会话 但我也使用 httpclient 从网络发送和获取数据 我在互联网上看到不可能获取WebView的内容 所以我需要使用我的httpclient从Web服务获取数据 问题是这个Web服务使用会话
  • 在 Django 中删除特定用户的所有会话的最优化方法?

    我正在运行 Django 1 3 使用会话中间件和身份验证中间件 settings py SESSION ENGINE django contrib sessions backends db Persist sessions to DB S
  • 是否可以在 ASP.NET Web API 和 SPA 中使用基于 cookie 的身份验证?

    我想创建基于 angularjs 前端和 ASP NET Web API 的 Web 应用程序 我需要创建安全 api 但我无法在将实施此 Web 应用程序的公司服务器上使用基于令牌的身份验证 是否可以对 SPA 和 ASP NET Web
  • 在 ruby​​ 中创建登录会话时理解“current_user”概念

    我正在阅读很棒的 Michael Hartl 教程来构建 ruby 应用程序here http ruby railstutorial org chapters sign in sign out sec 3acurrent user 我试图理
  • 新标签页和浏览器窗口中的 CSRF 令牌

    我通过以下方式在我的nodejs服务器上实现了CSRF攻击预防 登录时的用户会收到 CSRF 令牌和 cookie 存储在 cookie 中的基于 JWT 的令牌 CSRF 令牌将成为客户端发送的所有未来请求标头的一部分 ajaxSetup
  • Javascript Cookie 超时与倒计时器

    我想用 javascript 设置 cookie 很容易 假设我将其设置为 15 分钟 我如何制作一个倒计时器来显示 cookie 何时过期 即使他们离开了页面 我也希望它继续计数 当他们返回页面时 它仍然会倒计时 抱歉解释不好 但我相当确
  • 为什么 ServiceStack Razor FileSystemWatcher 不能在 Mono + Mac OS X 上工作?

    ServiceStack 对 Razor v2 的新支持使用FileSystemWatcher检测跟踪视图文件的更改并将其标记为无效 以便在下一个请求时重新编译它们 这对于调试非常有用 因为它允许您编辑视图而不是重建 重新启动项目 在我的
  • tomcat cookie域验证

    我正在使用 tomcat 8 0 21 和新的 Rfc6265 cookie 处理器 如果有以点开头的 cookie 我会收到以下错误 java lang IllegalArgumentException An invalid domain
  • scrapy中cookies的正确使用形式是什么

    我是个新手 我正在一个使用cookies的网络中使用scrapy 这对我来说是一个问题 因为我可以在没有cookies的网络上获取数据 但在有cookies的网络上获取数据对我来说很困难 我有这个代码结构 class mySpider Ba
  • 对 HttpClient 中创建 cookie 的不同方法感到困惑

    在 HttpClient 中创建 cookie 有不同的方法 我很困惑哪一种是最好的 我需要创建 检索和修改cookie 例如 我可以使用下面的代码来查看 cookie 列表并修改它们 但是如何创建它们呢 这是检索它们的正确方法吗 我需要它
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 从php表单获取cookie值

    对于用户可以在表单中输入的值 我该如何设置 cookie 值和名称 我该如何在第二页上显示该值 我不能不使用 cookie 所以虽然可能有更聪明的方法来做到这一点 但我只是想知道如何使用 cookie 来做到这一点 谢谢

随机推荐

  • Java 6 JVM 挂起

    对于这么长的帖子 我深表歉意 但我想知道在向 Sun 提交错误报告之前是否可以吸引更多人的关注 虚拟机 6u11操作系统 Windows XP SP3硬件 AMD Athlon 64 X2 4600 2 41GHz 配备 3 25 GB R
  • CollapsingToolbarLayout 副标题

    我可以设置标题吗CollapsingToolbarLayout通过setTitle方法 还有设置字幕的方法吗 如果你想让字幕转到Toolbar当 的时候AppBar已完全折叠 您应该创建您的自定义CoordinatorLayout Beha
  • 缺少 libmmal.so 和 picamera 库

    使用 pip 安装 picamera 库后 每当我导入该库时 都会收到此错误 OSError libmmal so cannot open shared object file No such file or directory 我正在运行
  • 如何本地化alloyui调度程序组件?

    我正在尝试将 Alloyui 调度程序完全本地化为法语 继这篇文章之后 如何获取 YUI 3 或 AlloyUI 组件的本地化版本 工作快完成了 但是我仍然缺少两件事的提示 我需要将左栏中的时间格式从 1 12am pm 更改为 1 24
  • html,css - 图片下方奇怪的隐形边距

    我在这里疯了 不知何故 在我页面中的所有图像下方有一个间隙 代码中不存在的边距 即使 Firebug 也看不到它 但 Firefox 和 Safari 正在渲染它 即使根本没有 CSS 这以前从未发生在我身上
  • 进行 GameCenter 身份验证的正确方法是什么?

    我在有关堆栈溢出的帖子中看到过 其中显示了处理 GameCenter 身份验证的片段 然而 这些解决方案都不能解决现实世界用例所涉及的任何问题 也就是说 GKLocalPlayer localPlayer authenticateHandl
  • 使用 Ajax 检查 WooCommerce 结帐中的现有电子邮件

    我正在尝试检查 WooCommerce 结账中 billing email 字段的插入值 以了解它是否存在 这是functions php中的代码 add action wp enqueue scripts live validation
  • JOIN 结果长度超过 50,000 个字符的限制

    我正在尝试组合 A 列中的文本并将其与 B 列的每种可能性相匹配 我使用了以下公式 in C1 transpose split join arrayformula rept filter A1 A len A1 A char 9999 co
  • OpenMP set_num_threads() 不起作用

    我正在使用 C 中的 OpenMP 编写并行程序 我想使用控制程序中的线程数omp set num threads 但它不起作用 include
  • Fortran 中的大实数运算

    我编写了一个 Fortran 代码来计算给定列表的第 i 次排列 1 2 3 n 无需计算所有其他的 即n 我需要它来找到 TSP 旅行推销员问题 的第 i 条路径 When n 很大 代码给了我一些错误 我测试发现找到的第 i 个排列不是
  • circular_buffer 和 Managed_mapped_file 分段错误

    我正在使用 boost 1 73 0 并尝试将circular buffer 与manage mapped file 一起使用以将字符串存储在磁盘上持久存在的循环缓冲区中 我执行以下操作来创建 打开circular buffer boost
  • 如何找到不同 numpy 数组中两点之间的距离?

    这是针对 K 均值算法的 这是为了家庭作业 所以我不想使用 内置 Kmeans 函数 我有 2 个 numpy 数组 一种是质心 另一个是数据点 我试图找到从每个质心到每个数据点的距离 我不知道如何将数组传递给我的函数以使其打印 我想结束
  • JavaScript 中的保留字列表

    有没有比这个更完整的列表莫斯拉的关于保留字 它缺少像这样的词解析浮点型 toString 原型 etc parseFloat toString and prototype are not保留字 仅仅因为它们有时具有特殊含义 并不意味着您不能
  • 使用 Pandas 与 DataFrame 合并时出现 ValueError

    我正在尝试使用 Pandas 合并三个 DataFrame 为什么我会收到此错误消息 ValueError DataFrame 的真值不明确 使用 a empty a bool a item a any 或 a all 这是代码 df pd
  • 如何在给定(一条线上的两个点)和(从第三点到第一点的距离)的情况下找到第三点

    给定 一条线上的两个点 和 第三点到第一点的距离 如何找到第三点 语言 Visual Basic 2012 第三点与第二点在同一条线上 并且可能更接近第一点 也可能更接近第二点 这是一个可以处理两者 来自数据数组 的函数 奇怪的是 我似乎无
  • SQL 从一张表的字段更新另一张表的字段

    我有两张桌子 A ID column1 column2 column3 B ID column1 column2 column3 column4 A将永远是子集B 意味着所有列A也在B 我想用特定的内容更新记录ID in B他们的数据来自A
  • 如何在页面加载时使用 Javascript 发出成功的 Ajax 请求

    我正在开发一个购物车应用程序 用户将向其存储在本地存储中的 购物车 添加商品 当用户导航到将商品添加到购物车的不同页面时 需要使用他们添加到购物车 本地存储 的商品填充该页面 我使用 Handbars 为我的页面构建模板 使用 NodeJS
  • Python从xml树中删除重复元素

    我有一个 xml 结构 其中一些元素不是唯一的 因此 我设法对子树进行排序 并且可以正确过滤我拥有多次的元素 但删除功能似乎不适用 我的 XML 结构看起来像这样简化
  • 使用 Terraform 更改 hash_key 会导致表已存在错误

    我有一个使用此 Terraform 创建的 DynamoDB 表 resource aws dynamodb table materials table name materials hash key MATERIAL billing mo
  • 在 Web.Config 中设置 ServiceStack Cookie 域会导致会话 ID 在每次请求时发生更改

    As per ServiceStack 域和子域的身份验证 我在 httpCookies 部分中设置了 cookie 域 它实际上有效 它正确设置了 cookie 的域 但我注意到 一旦我将此行添加到配置中 每个请求都会生成一个新的会话 I