如何通过WebMethod确定当前用户的身份验证状态
是否可以通过公共WebMethod确定当前用户的身份验证状态?到目前为止,我得到的信息如下:
[WebMethod]
public bool IsAuthenticated()
{
return Context.User.Identity.IsAuthenticated;
}
因为没有任何内容传递到此方法,并且 Context.User 是“匿名”并且此时在技术上未经身份验证,所以响应始终为 false
,即使是经过身份验证的用户。
我的下一个想法是传入用户的 UserProviderKey (GUID) 并使用它来生成通用主体以进行验证。我不确定这是否可能,或者 GUID 本身是否提供足够的安全性来防止人们检索其他用户的身份验证状态。
Is it possible to determine the current user's authentication status via a public WebMethod? Here's what I've got so far:
[WebMethod]
public bool IsAuthenticated()
{
return Context.User.Identity.IsAuthenticated;
}
Because there's nothing passed in to this method and the Context.User is "Anonymous" and is technically unauthenticated at this point, the response is always false
, even for authenticated users.
My next thought was to pass in the user's UserProviderKey (GUID) and use that to generate a generic principal to validate. I'm not sure if that's possible or if the GUID itself provides enough security to prevent people from retrieving the authentication status of other users.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要通过 Web 请求传递身份验证 cookie。这是 .NET 知道用户是否经过身份验证的方式(假设您使用的是标准身份验证)。
身份验证 cookie 与会话 cookie 无关,这是高度不安全的。
You would need to pass the authentication cookie with the web request. This is the way .NET knows if a user is authenticated or not (assuming you are using standard authentication).
The authentication cookie is nothing to do with session cookie, which is highly insecure.
似乎 webmethod 无法读取身份验证 cookie。
尝试
假设基于 cookie 的会话,这将允许 Web 方法读取 cookie。
Seems the webmethod cannot read the authentication cookie.
Try
Assuming cookie-based session, this will allow the web method to read cookies.