ASP.NET会员获取已登录用户

3

我定义了一个用户名,并将其添加到一个角色中。

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

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
看起来你在 post back 期间没有解析 cookie。让我看看能否为你提供一些代码。大约有12行,我当时从 code project 上获取的......现在可以拿到它,但我正用iPad读取。 - Richard B
@RichardB 谢谢。如果可能的话,请放上代码。 - Shahin
2个回答

4

您是否将 authentication-mode 设置为 Forms

Web.config:

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

此外,您应该使用Page.User.Identity.Name而不是Context.User.Identity.Name

2

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

如果这样做可以解决问题,请告诉我,我之前也犯过这个错误 =)


感谢关注:] 但是不行!它没有起作用。 Page.User.Identity.Name 返回Windows的当前用户!! - Shahin
@shaahin拍吧!好运!如果我想起来还会再试一次哈哈。 - Josh Darnell
2
Page.User只是一个实用属性,它返回context.User的值,也就是它们是同一件事情。 - Simon Halsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接