如何检查用户是否已登录?

97

我在我的ASP.NET应用程序中使用以下方法进行表单身份验证。

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

我该如何检查用户是否已登录?以及如何获取已登录用户的用户名?

4个回答

207

我成功找到了正确的答案,它在下面。

bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated

编辑

此次编辑的功劳归功于@Gianpiero Caretti,他在评论中提出了这个建议。

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated

35
为了让代码更加安全,只需要做一点小修改:bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated。 - Gianpiero
17
在较新版本的C#中,您可以使用User?.Identity.IsAuthenticated == true。它的意思是:如果"User"不为null并且用户已经通过身份验证,则返回true。 - bradlis7
5
或者 User?.Identity.IsAuthenticated ?? false,但 @bradlis7 的代码可能更易读。 - Michael
(User?.Identity.IsAuthenticated).GetValueOrDefault() - Stacey

16

最简单的方法:

if (Request.IsAuthenticated) ...

1
它与 User.Identity.IsAuthenticated 相同。 - Yola

15
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}

1
既然这种方法没有那么多赞,使用这种方法时有什么缺点/问题需要注意吗?我已经决定使用它,目前看来它似乎很有效。 - pnizzle
这与得票最高的答案几乎相同,但我们这里没有使用命名空间。 - mai

7

检查用户是否已通过身份验证的最简单方法是使用Request.User.IsAuthenticated(我记得是这样的)。


1
很好,“Request.LogonUserIdentity”类提供了所有这些方法和属性。感谢您的提示。 - Muneer
1
不需要@beardtwizzle。这将显示Windows账户是否已登录。即使您删除了cookies,也可以看到窗口帐户和登录用户名。这个对我有用。 "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated" - Muneer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接