User.Identity.IsAuthenticated 在通用 asp.net 处理程序中的使用

2024-04-09

我已经使用 WIF 设置了 STS,并希望公开用户是否已登录,以便 RP 可以确定用户是否已登录,而不需要用户重定向到 STS 并返回。如果用户登录,RP 上将出现不同的流程,因此了解这一点很重要,但不要在流程的此时强制登录。

我的计划是在 STS 上创建一个简单的通用处理程序,当通过 HttpWebRequest 命中时,返回 context.User.Identity.IsAuthenticated 的输出(其中 context 是传递到 ProcessRequest 方法中的 HttpContext:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";

    if (context.User != null && context.User.Identity.IsAuthenticated)
        context.Response.Write("True");
    else
        context.Response.Write("False");
}

我的问题是,如果用户已登录并且我直接点击此处理程序,它会返回 True,但如果我以编程方式从 RP 点击处理程序,它会返回 False(实际上 Identity 为 null)。 我这样做是完全错误的吗?从 RP 中点击处理程序将返回 RP 上用户的状态,或者我可能做错了什么?


仅当您随请求发送 STS 身份验证 cookie 时,此处理程序才会工作(返回 true)。只有您的网络浏览器可能有这些 cookie。因此它不能通过 HttpWebRequest 完成。这也是当您直接从浏览器调用处理程序时它起作用的原因。

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

User.Identity.IsAuthenticated 在通用 asp.net 处理程序中的使用 的相关文章

随机推荐