これは必ずしも問題ではありません。私はそれがどのように機能するかについて興味があります。私には方法があります:
public static bool UserIsAuthenticated()
{
bool isAuthed = false;
try
{
if (HttpContext.Current.User.Identity.Name != null)
{
if (HttpContext.Current.User.Identity.Name.Length != 0)
{
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
isAuthed = true;
string MyUserData = ticket.UserData;
}
}
}
catch { } // not authed
return isAuthed;
}
HttpContext.Current.User.Identity.Name
は、ユーザーが存在しない場合はnull
を返しますが、どのユーザー名が存在するか、または存在しないかをどのようにして知るのでしょうか?
HttpContext.Current.User.Identity.Nameはnullを返します
これは、認証モードがFormsまたはweb.configファイルのWindows。
たとえば、次のように認証を記述した場合:
<authentication mode="Forms"/>
それから認証mode = "Forms"であるため、ユーザー名に対してnullを取得します。ただし、次のように認証モードをWindowsに変更すると、
<authentication mode="Windows"/>
アプリケーションを再度実行してユーザー名を確認すると、ユーザー名が正常に取得されます。
詳細については、「 System.Web.HttpContext.Current.User.Identity.Name Vs System.Environment.UserName in ASP.NET 」を参照してください。
Windows認証の場合
プロジェクトを選択します。
F4を押す
「匿名認証」を無効にし、「Windows認証」を有効にします
「ユーザー」(別名)がログオンする必要があるネットワーク環境を想定します。通常、これはユーザーID(UID)とパスワード(PW)です。では、あなたのアイデンティティは何ですか、それともあなたは誰ですか?あなたはUIDであり、これはログオンセッションから「名前」を収集します。シンプル!また、Best Buyなどのログインが必要なインターネットアプリケーションでも動作するはずです。
これにより、使用する必要があるWebアプリケーションのデフォルトページを開いたときに、セッションからUIDまたは「名前」が取得されます。さて、私のインスタンスでは、私はドメインの一部であるため、初期のWindows認証を使用できます。そして、私が誰であるか、つまりコードの2番目の部分を確認する必要があります。フォーム認証に関しては、ワークステーション/コンピューターに送信されるチケット(おそらくCookie)に依存します。そして、コードは次のようになります。
string id = HttpContext.Current.User.Identity.Name;
// Strip the domain off of the result
id = id.Substring(id.LastIndexOf(@"\", StringComparison.InvariantCulture) + 1);
これで、私のビジネス名(別名UID)が表示され、画面に表示できます。
また、それを確認してください
<modules>
<remove name="FormsAuthentication"/>
</modules>
このような何かを見つけた場合は、単に削除してください:
<remove name="FormsAuthentication"/>
Web.configからの行で、ここに行くと、うまくいきます。
[HttpContext.Current.User]はどのユーザー名が存在するか、または存在しないかをどのように知るのですか?
これが機能する1つの方法の例を見てみましょう。フォーム認証を使用しており、「OnAuthenticate」イベントが発生したとします。このイベントは、「 アプリケーションが現在の要求を認証するとき 」( 参照ソース )で発生します。
この時点まで、アプリケーションはあなたが誰なのかわかりません。
フォーム認証を使用しているため、最初にExtractTicketFromCookie
への呼び出しを介して認証Cookie(通常は 。ASPAUTH )を解析してチェックします。これはFormsAuthentication.Decrypt
を呼び出します(このメソッドはパブリックです。自分で呼び出すことができます!)。次に、Context.SetPrincipalNoDemand
を呼び出して、Cookieをユーザーに変換し、Context.User
に詰め込みます( Reference Source )。