MVC3 - UserId和角色信息在哪里

时间:2011-06-15 19:26:34

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership class-design

这是我在MVC3中为我创建的示例项目的Account / Membership类生成的模型代码。我没有看到UserId字段/属性或角色信息.. UserId和Roles信息在哪里?

  public class ChangePasswordModel
{
    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Current password")]
    public string OldPassword { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "New password")]
    public string NewPassword { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm new password")]
    [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

public class LogOnModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email address")]
    public string Email { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

}

2 个答案:

答案 0 :(得分:2)

除非我误解了这个问题......

这些模型与用户模型有关。

UserId和Roles正在处理身份验证和授权

最有可能的是,您使用的是表单身份验证和默认的ASP.NET成员资格提供程序。

如果要访问当前登录用户的UserId,则需要在签署用户时将其添加到表单身份验证票证,然后才能通过HttpContext.Current.Request.User.Identity访问它。

如果您使用FormsAuthentication.SetAuthCookie,那么Identity.Name会指向您传递给SetAuthCookie的任何内容 - 因此您可以传递UserId。

但大多数人(包括我自己)使用昵称/用户名作为Identity.Name,因此您需要手动创建表单身份验证票证并将其添加到响应cookie中。

要查看用户是否在某个角色中,请执行以下操作:

HttpContext.Current.User.IsInRole("Administrator")

这是标准的ASP.NET内容,并非特定于ASP.NET MVC。

此外,如果您使用ORM,如Entity Framework或NHibernate或Linq2Sql,请不要映射成员资格表。

创建自己的用户表,其中FK指向该表,然后您的用户表成为模型。

内置的成员资格提供程序API将使用幕后的存储过程来执行您需要的功能。

答案 1 :(得分:0)

这是默认视图的模型 - 注册和更改密码。

只有配置了roleprovider才能进行角色。