【问题标题】:how to check from JavaScript if loaded page has ASP.NET authentication cookie?如果加载的页面有 ASP.NET 身份验证 cookie,如何从 JavaScript 检查?
【发布时间】:2011-02-02 16:04:31
【问题描述】:

看起来 JavaScript 无法访问身份验证 cookie('ASP.NET_SessionId'、'.ASPXFORMSAUTH')

在 http 标头中我可以看到 cookie,但 document.cookie 对象没有它们。

【问题讨论】:

    标签: asp.net javascript authentication cookies


    【解决方案1】:

    您可以创建一个使用以下代码返回真/假值的 WebMethod:

    [WebMethod]
    public bool IsAuthenticated()
    {
        return HttpRequest.IsAuthenticated;
    }
    

    使用 jQuery 或 MSAJAX 从 javascript 调用它。

    【讨论】:

    • 从技术角度来看,这实际上并不能说明“加载的页面”是否经过身份验证。它告诉 AJAX 请求是否经过身份验证。
    • 我之所以要签入javascript是因为我不想去服务器(性能问题,我每天有3 000 000个请求)
    【解决方案2】:

    ASP.NET 会话 cookie 默认为 HTTP-only(这是理所当然的)。如果您需要确定用户是否在 Javascript 中进行了身份验证,则在页面上放置一个 HiddenField 并根据您的身份验证令牌将其值设置为 0 或 1 是一个更好的解决方案。

    【讨论】:

    • 该页面来自缓存 - 每个人都相同,但 cookie 是唯一的。在向服务器发出 ajax 请求以加载特定于用户的内容之前,我需要检查 cookie。如果用户没有身份验证 cookie,我不想去服务器。
    • 好吧,如果你切换到无cookie会话你可以解决这个问题:)
    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2011-01-10
    • 2011-08-19
    • 2018-05-10
    • 2015-10-09
    • 2011-02-28
    相关资源
    最近更新 更多