这是我在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; }
}
}
答案 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才能进行角色。