8

現在のユーザーのログインIDを読み取れるようにする必要があるWebページを実行しています。これが私が使用しているコードです:

string id = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

現在、これは正しいログインを返しますが、このメソッドで使用すると:

protected Boolean isPageOwner()
{
    string id = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    alert("User: " + id);
    if (id.Equals(pageOwnerID))
    {
        return true;
    }
    if (accessPermission.ContainsKey(id))
    {
        return true;
    }
    return false;
}

返されるIDがpageOwnerIDと同じであっても、メソッドはfalseを返します。私はこれのどの部分に問題があるのか​​本当にわかりません。

ちなみに、私のログインIDはstring1 / string2の形式ですが、コードはスラッシュなしでstring1+string2として取得します。

アドバイスをいただければ幸いです。

よろしく。

4

2 に答える 2

11

これを使用してユーザー名を取得してみてください....

if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
   string username = System.Web.HttpContext.Current.User.Identity.Name;
}

Windows 認証が使用されていないようです。匿名アクセスを無効にして、Windows 統合セキュリティを有効にする必要があります。

これをweb.configに追加してください...

<system.web>
 <authentication mode="Windows"/>
  <authorization>
    <deny users="?"/> 
  </authorization>
</system.web>
于 2012-07-19T20:28:41.083 に答える
1

任意のレイヤー (またはソリューション内のプロジェクト) 内から現在ログインしているユーザーの ID が必要な場合は、次を使用します。

string userId = Thread.CurrentPrincipal.Identity.GetUserId();

于 2016-08-10T07:21:04.143 に答える