【问题标题】:Web API session managmentWeb API 会话管理
【发布时间】:2017-09-11 06:06:56
【问题描述】:

我的要求 - 我有一个 web api,它为我提供了来自 db 的所有数据。我有一个 .net 网站,它使用这个 api 来获取所有数据。现在我想要的是当我登录我的网站时,我想在“API”中管理会话。

我知道 web api 中的会话不是一个好方法,但我仍然需要这样做。

我已经在 web api 中实现了会话管理(引用自 here),如果我从邮递员发送我的所有请求(即我通过调用 1 个方法并检索它来设置会话中的变量),它工作正常通过调用第二种方法的会话变量)。但是,当我在 jQuery 的 asp.net 网站上做同样的事情时,我没有得到存储的会话变量(我注意到每次请求的会话 id 都不同)。

在会话中保存变量的代码

    $.ajax({
                url: 'http://localhost:63726/api/Login/Login',
                type: "GET",
                dataType: "JSON",
                success: function (data) {
                    alert("success");
                },
                error: function (data) {
                    alert("error");
                }
            });

检索存储在会话中的变量的代码

    $.ajax({
                url: 'http://localhost:63726/api/SessionCheck/LoginName',
                type: "GET",
                dataType: "JSON",
                success: function (data) {
                    alert("success");
                },
                error: function (data) {
                    alert("error");
                }
            });

我需要做些什么来实现我的目标..您的意见将节省我的时间...

【问题讨论】:

  • 在 webapi 中使用 session 不是一个好方法。使用基于令牌的身份验证。
  • 我完全同意你的观点,但我的客户只想要这个,所以我需要这样做。

标签: asp.net session asp.net-web-api asp.net-web-api2


【解决方案1】:

我找到了我的答案Session management in web api

【讨论】:

    【解决方案2】:

    请先阅读此Web Api Session storage

    要从会话中检索数据,请使用 javascript sessionStorage(而不是 ajax)。

    【讨论】:

    • 我已经读过了。问题不在于 jquery 代码。问题是当我在 web api 中调用 web api 时,我发现了不同的会话 id。如果我没有得到你,那么请详细说明..
    • 一开始,Web Api 默认是无状态的。如果您希望(或需要)将数据存储在浏览器会话存储中,则必须通过 js 在客户端解析它。如果您在服务器端解决它,请阅读此WebApi session
    • 我也已经阅读了那篇文章,而且效果很好。我的问题是在调用 api 时保持相同的会话 id...实际上使用邮递员成功运行并来自浏览器的直接请求。
    猜你喜欢
    • 2015-04-14
    • 2015-02-12
    • 2016-02-21
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2014-10-30
    相关资源
    最近更新 更多