【问题标题】:Given the string of the UserName, how can I check if that user IsInRole?给定用户名的字符串,我如何检查该用户是否为 IsInRole?
【发布时间】:2012-04-20 13:39:27
【问题描述】:

我试图在给定用户完全“登录”到我正在构建的站点之前检查他们是否具有角色。通常我会使用代码:

User.IsInRole("CustomRole")

但在这种情况下,该行总是产生“false” - 我相信这是因为要使用 User.IsInRole,用户必须已经完全登录。我试图在 LogOn 方法中检查这条信息我的帐户控制器,因此用户尚未登录(我认为)。

我将如何返回一个用户对象,以便我可以做我在下面尝试做的事情:

public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

            // Need to identify the user because the "User" is not officially 'logged in' yet and cannot be accessed via "User.IsInRole" - am I correct in this understanding
            MembershipUser u = Membership.GetUser(model.UserName);
            if (u.IsInRole("Administrator"))

. . . . truncated

以上代码抛出如下错误:

'System.Web.Security.MembershipUser' does not contain a definition for 'IsInRole' and no extension method 'IsInRole' accepting a first argument of type 'System.Web.Security.MembershipUser' could be found (are you missing a using directive or an assembly reference?)

MembershipUser u = Membership.GetUser(model.UserName) 显然没有返回我可以使用 IsInRole 的对象,有什么提示吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 membership-provider isinrole


    【解决方案1】:

    你想要的是

    var authorized = Roles.IsUserInRole(username, roleName);
    

    【讨论】:

      【解决方案2】:

      我认为角色和用户名都需要重载。 MSDN

      【讨论】:

        猜你喜欢
        • 2022-06-17
        • 2016-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-04
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        相关资源
        最近更新 更多