如何通过WebMethod确定当前用户的身份验证状态

本文关键字:用户 身份验证 状态 何通过 WebMethod | 更新日期: 2023-09-27 18:07:31

是否可以通过公共WebMethod确定当前用户的身份验证状态?以下是我目前得到的:

[WebMethod]
public bool IsAuthenticated()
{
    return Context.User.Identity.IsAuthenticated;
}

因为没有任何东西传递给这个方法和Context。用户为"匿名",并且此时技术上未经过身份验证,响应始终为false,即使对于已通过身份验证的用户也是如此。

我的下一个想法是传入用户的UserProviderKey (GUID),并使用它来生成一个通用主体进行验证。我不确定这是否可能,或者GUID本身是否提供了足够的安全性来防止人们检索其他用户的身份验证状态。

如何通过WebMethod确定当前用户的身份验证状态

您需要通过web请求的身份验证cookie。这是。net知道用户是否经过身份验证的方法(假设您使用的是标准身份验证)。

认证cookie与会话cookie无关,是高度不安全的

webmethod似乎无法读取认证cookie

[WebMethod(EnableSession = true)]

假设基于cookie的会话,这将允许web方法读取cookie