2011-10-23 73 views
3

我已经定义了一个用户名,并将其添加到角色中。ASP.NET会员获取登录用户

现在,我使用此代码来检查用户是否有效:

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

@RichardB谢谢。请尽可能放置代码。 – Shahin

回答

4

你设置authentication-modeForms

Web.config文件:

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

而且你应该使用Page.User.Identity.Name而不是Context.User.Identity.Name

+0

谢谢老师;):] – Shahin

+1

我不是老师亲爱的@shaahin我只是朋友:D –

2

我相信你只需要使用Page.User.Identity.Name而不是Context

让我知道,如果这样做的话,我所做=在此之前,混淆)

+0

感谢您的关注:]但没办法!它没有工作 Page.User.Identity.Name返回窗户的当前用户! – Shahin

+0

@shaahin拍摄!好吧,祝你好运!如果我想到其他东西,我会再试一次哈哈。 – jadarnel27

+2

Page.User只是一个实用属性,它返回context.User的值,即它们是相同的东西 –