ユーザーが「ログイン」していることを確認する方法は?


89

ASP.NETアプリケーションで以下の方法でフォーム認証を使用しています

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

ユーザーがログインしているかどうかを確認するにはどうすればよいですか?また、ログインしたユーザーのユーザー名を取得するにはどうすればよいですか?

回答:


189

私はなんとか正しいものを見つけることができました。以下です。

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

編集

この編集の功績は、コメントでこれを提案した@GianpieroCarettiにあります。

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 2013年

14
新しいバージョンのC#では、を使用できますUser?.Identity.IsAuthenticated == true
bradlis7 2016年

3
またはUser?.Identity.IsAuthenticated ?? false、しかし@ bradlis7のコードはおそらく読みやすいです。
マイケル


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

このアプローチにはそれほど多くの賛成票がないことを見て、このアプローチを使用するときに注意すべき欠点/問題はありますか?私はこれを使用することに決めました、そしてそれは今のところうまくいくようです。
pnizzle

上位投票の回答とほぼ同じですが、ここでは名前空間を使用していません
mai

6

それらが認証されているかどうかを確認する最も簡単な方法は、Request.User.IsAuthenticated(メモリから)


1
「Request.LogonUserIdentity」クラスは、これらすべてのメソッドとプロパティを提供します。ヒントをありがとう。
BlueBird

1
@beardtwizzleはありません。これは、Windowsアカウントがログインしているかどうかを示しています。クッキーが削除された場合でも、ウィンドウアカウントのユーザー名とログインを確認できます。これは私のために働いた。"bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.