2011-10-23 9 views
3

私はユーザー名を定義していましたが、それを役割に追加しました。ASP.NET Membershipユーザーを取得する

は今、私は、ユーザーが有効かどうかを確認するには、このコードを使用します。その後

if (Membership.ValidateUser(txtUsername.Text, txtPassword.Text)) { 
    FormsAuthentication.SetAuthCookie(txtUsername.Text, false); 
    if (Roles.GetRolesForUser(txtUsername.Text).Any(role => role == "Admin")) { 
     Page.Response.Redirect(ResolveUrl("~/Admin/Products.aspx")); 
    } 
    txtUsername.Text = ""; 
} 

を、私は、ユーザーがロールにであるかどうかProducts.aspxページで確認したいです。私はこのコードを書いたが、それは私のローカルのWindowsのユーザ名を返します。私はそれがリターンがログオンしているユーザーすべきであると考えて

Context.User.Identity.Name 

を。その後

私はこのコードをチェックします:

if (!Context.User.IsInRole("Admin")) 
     { 
      Response.Redirect(ResolveUrl("~/Default.aspx")); 

     } 


私のコードが悪いのか?ユーザーが特定の役割を担っている場合は、どうすれば確認できますか?

+1

ポストバック中にCookieを解析していない可能性があります。私があなたのためにいくつかのコードを引き出すことができるかどうかを見てみましょう。それは約12行です、そして、私はコードプロジェクトからその時をつかんでいました...今はそれを得るだろうが、iPadで読んでいます。 –

+0

@リチャードBありがとうございます。可能であればコードを記入してください。 – Shahin

答えて

4

)私はそれはそれをしないならば、私は=その前にミックスアップを行った教えてください?

のWeb.config:

<authentication mode="Forms"> 
</authentication> 

また、あなたがPage.User.Identity.Nameの代わりContext.User.Identity.Nameを使用する必要があります。

+0

ありがとう、先生;):] – Shahin

+1

私は教師親愛なるではない@shaahin私はちょうど友人です:D –

2

Contextの代わりにPage.User.Identity.Nameを使用する必要があります。

あなたはFormsauthentication-modeを設定してください

+0

注目に感謝:]しかし、方法はありません!それは動作しませんでした Page.User.Identity.NameはWindowsの現在のユーザーを返します! – Shahin

+0

@shaahinシュート!では、頑張ってね!他に何か考えたら、もう一度試してみるよ。 – jadarnel27

+2

Page.Userはcontext.Userの値を返す単なるユーティリティプロパティです。つまり、それらは同じものです –

関連する問題