MVC3 - Где информация об идентификаторе пользователя и роли - PullRequest
1 голос
/ 15 июня 2011

Это код модели, созданный в MVC3 для класса Account / Membership для созданного мною примера проекта.Я не вижу поля / атрибута UserId или информации о ролях. Где информация о UserId и ролях?

  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 ]

2 голосов
/ 16 июня 2011

Если я не понимаю вопрос ...

Эти модели связаны с моделью пользователя .

Идентификатор пользователя и роли имеют дело с аутентификациейи авторизация .

Скорее всего, вы используете проверку подлинности с помощью форм и поставщик членства в ASP.NET по умолчанию.

Если вы хотите получить доступ к идентификатору пользователя текущего вошедшего в систему пользователя, вынеобходимо добавить его в тикет аутентификации форм при входе пользователя в систему, тогда вы можете получить к нему доступ через HttpContext.Current.Request.User.Identity.

Если вы используете FormsAuthentication.SetAuthCookie, то Identity.Name будет указывать на то, что вы передалиSetAuthCookie - чтобы вы могли передать UserId.

Но большинство людей (включая меня) используют псевдонимы / имена пользователей для Identity.Name, поэтому вам нужно вручную создать билет проверки подлинности с помощью форм и добавить его вкуки-файлы ответа.

Чтобы узнать, играет ли пользователь роль, выполните следующие действия:

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

Это стандартная часть ASP.NET, не специфичная для ASP.NET MVC.

Кроме того, если вы используете ИЛИM, как Entity Framework или NHibernate или Linq2Sql, не отображайте таблицы членства.

Создайте свою собственную таблицу User, в которой FK указывает на эту таблицу, тогда ваша таблица User станет моделью.

Встроенный API поставщика членства будет использовать хранимые процедуры за кулисами для выполнения необходимых вам функций.

0 голосов
/ 15 июня 2011

Это модели для представлений по умолчанию - зарегистрируйтесь и смените пароль.

Роль может быть взята только в том случае, если настроен ролевой поставщик.

...