2011-09-06 18 views
1

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

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

因为没有什么传递给该方法和Context.User是“无名氏”,是未经验证的技术,在这一点上,反应总是false,即使是认证用户。

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

回答

2

您需要将身份验证Cookie与网络请求一起传递。这是.NET知道用户是否被认证的方式(假设你正在使用标准认证)。

认证Cookie与会话cookie无关,这是非常不安全的

2

似乎webmethod无法读取身份验证cookie。

尝试

[WebMethod(EnableSession = true)] 

假设基于Cookie的会话,这将允许Web方法来读取cookies。

+1

我试过这个,它仍然返回false,即使我使用基于cookie的会话状态。但是,我能够访问会话并使用它来查找工作解决方案。非常感谢! –

相关问题