Как вы сказали User.Identity.Name
действительно правильно. для возврата имени вошедшего в систему пользователя. Но раздел членства, как вы сказали, предоставляет только учетные записи Windows. Вы можете использовать подобное без пользователя учетных записей Windows, чтобы работать в каждом сценарии, и все же можете проверить на наличие окон, если таковые имеются. Если вы вызываете его без членства и следует шаблону MVC3 по умолчанию, он должен работать нормально.
String Username = User.Identity.Name;
Когда вы входите в систему, используя шаблон MVC3, он создает authcookie
. См. Код контроллера учетной записи . Здесь в него передаются два параметра. Имя пользователя и для сохранения (когда браузер закрыт - логин все еще кэшируется).
Имя пользователя - это строковое поле, которое называется User.Identity.Name
и фактически означает, что в него можно вставить что угодно, и оно никак не связано с входом в Windows.
Вы можете проверить вход в систему по желаемому методу и, если да, установить cookie, используя метод authcookie. (его зашифровано). И установите имя пользователя на то, что вы хотите. И если ваша проверка пользователя не удалась, не создавайте ее и перенаправьте обратно на страницу.
См. Пример кода. Это все из памяти, так как у меня нет кода передо мной для справки. Но все это в контроллере учетной записи, Login Action.
Когда файл cookie установлен, состояние входа пользователей кэшируется для сеанса. Вам нужно будет убедиться, что пользователь вошел в систему при посещении веб-страницы. В противном случае вход в систему будет бессмысленным. Это простой атрибут контроллера / действия.
Примечание: не делайте этого с контроллером учетной записи / входа, так как вы не сможете посетить страницу входа, так как вы не вошли в систему.
[Authorize]
public ActionResult DoSomething()
{
// ...
}
Надеюсь, я помог.