是否可以通过公共WebMethod确定当前用户的身份验证状态?这是我到目前为止所得到的:
[WebMethod]
public bool IsAuthenticated()
{
return Context.User.Identity.IsAuthenticated;
}
因为此方法没有传递任何内容,并且Context.User是“匿名”,并且此时在技术上未经身份验证,所以响应始终为false
,即使对于经过身份验证的用户也是如此。
我的下一个想法是传入用户的UserProviderKey(GUID)并使用它来生成要验证的通用主体。我不确定这是否可行,或者GUID本身是否提供了足够的安全性来阻止人们检索其他用户的身份验证状态。
答案 0 :(得分:2)
似乎webmethod无法读取身份验证cookie。
尝试
[WebMethod(EnableSession = true)]
假设基于cookie的会话,这将允许web方法读取cookie。
答案 1 :(得分:2)
您需要使用Web请求传递身份验证Cookie。这是.NET知道用户是否经过身份验证的方式(假设您使用的是标准身份验证)。
身份验证Cookie与会话cookie无关,非常不安全。