Я использую проект ASP.NET MVC 5 с идентификаторами 2.1.0 и VS2013 U4. Я хочу добавить претензии к пользователю во время регистрации, чтобы быть сохраненным в db. Эти требования представляют пользовательские свойства пользователя.
Поскольку я создал веб-страницу для администратора, чтобы создавать/редактировать/удалять пользователей, я все еще использую метод create от AccountController
для создания пользователя, но я не хочу входить в этот пользователь. Как я могу добавить эти претензии к пользователю?Как добавить претензии во время регистрации пользователя
ответ
Вы, наверное, уже есть UserManager
класс. Вы можете использовать его для создания пользователей и для добавления претензий.
В качестве примера в контроллере:
// gather some context stuff
var context = this.Request.GetContext();
// gather the user manager
var usermanager = context.Get<ApplicationUserManager>();
// add a country claim (given you have the userId)
usermanager.AddClaim("userid", new Claim(ClaimTypes.Country, "Germany"));
Для того, чтобы это работало вам нужно реализовать свой собственный UserManager
и связать его с контекстом Owin (в данном примере это ApplicationUserManager
, которая в основном является class ApplicationUserManager : UserManager<ApplicationUser> { }
только с добавлено небольшое количество конфигурации). Немного прочитайте здесь: https://msdn.microsoft.com/en-us/library/dn613290%28v=vs.108%29.aspx
вы можете использовать Как
private void SignInAsync(User User)
{
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, User.Employee.Name));
claims.Add(new Claim(ClaimTypes.Email, User.Employee.EmailId));
claims.Add(new Claim(ClaimTypes.Role, User.RoleId.ToString()));
var id = new ClaimsIdentity(claims,
DefaultAuthenticationTypes.ApplicationCookie);
var claimsPrincipal = new ClaimsPrincipal(id);
// Set current principal
Thread.CurrentPrincipal = claimsPrincipal;
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(id);
}
после регистрации передать значение таблицы пользователя в этой функции
SignInAsync(result);
вы можете получить значение моллюск как
var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
// Get the claims values
string UserRoleValue = identity.Claims.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value).SingleOrDefault();
Это добавляет претензии к файлу cookie аутентификации пользователей и не ** сохраняет их в БД для загрузки при следующем входе в систему. Также работа с такими потоками, как «Thread.CurrentPrincipal», не очень хорошая идея, поскольку потоки могут переключаться, особенно в сценарии async. – ChrFin
@MANISH O.K. Благодарю. Но как я могу получить этого пользователя в моем/Account/Login методе? – MilanM
@ChrFin, как я могу добавить их в db? – MilanM
Фактически вы можете создавать претензии одновременно с созданием учетной записи пользователя.
Просто добавьте претензии к объекту пользователя, прежде чем вызывать CreateAsync в диспетчере пользователей.
var identityUser = new IdentityUser
{
UserName = username,
Email = email,
// etc...
Claims = { new IdentityUserClaim { ClaimType = "SomeClaimType", ClaimValue = "SomeClaimValue"} }
};
var identityResult = await _userManager.CreateAsync(identityUser, password);
Это создаст пользователя и свяжет претензии с пользователем как одну логическую операцию с сохранением.
- 1. Как автоматически назначить пользователя для регистрации во время регистрации
- 2. MemberShipException во время регистрации пользователя в ASP.NET
- 3. Придумать подтверждение имени пользователя во время регистрации
- 4. Добавить часы во время процесса регистрации в
- 5. рассчитать время регистрации пользователя
- 6. Как создать определенный URL-адрес для пользователя во время регистрации?
- 7. Как whatsapp находит имя пользователя во время регистрации?
- 8. Добавить претензии при создании нового пользователя
- 9. Стойкие данные во время регистрации
- 10. Вставьте идентификатор пользователя в другую таблицу во время регистрации
- 11. Как зарегистрировать подписку PayPal во время регистрации
- 12. Как добавить разрешения для пользователей во время регистрации в Django?
- 13. Как добавить/удалить претензии в любое время в контроллере
- 14. Удалить претензии от пользователя
- 15. присвоение роли пользователя по умолчанию во время регистрации
- 16. Двойной пароль во время регистрации
- 17. google app engine: проверка наличия пользователя во время регистрации
- 18. Правильно блокировка строк во время процедуры регистрации пользователя
- 19. Firebase Загрузить изображение в хранилище во время регистрации пользователя
- 20. Обновить претензии после входа пользователя
- 21. Предотвращение повторных записей во время регистрации
- 22. Как проверить почту во время регистрации?
- 23. Как создать токен jwt во время регистрации?
- 24. Как добавить пользователя к роли при регистрации
- 25. клиентов Группировки во время регистрации (в Magento)
- 26. Firebase - проблема с Auth во время регистрации
- 27. Расположение файла пакета Delphi во время регистрации
- 28. Как добавить претензии в ASP.NET Identity
- 29. Как AspNet Identity генерирует претензии пользователя
- 30. Как добавить нового пользователя в Spring Security во время выполнения
Я преуспел в этом. Еще один вопрос: могу ли я изменить заявку позже в db, когда изменяется атрибут пользователя? И как я могу получить доступ к этим претензиям в приложении? – MilanM
Вы должны иметь возможность получить эти данные, используя свойства навигации на объекте ApplicationUser (user.Claims). Здесь есть некоторые интересные сведения об этом: http://stackoverflow.com/questions/22105583/why-is-asp-net-identity-identitydbcontext-a-black-box – pysco68
O.K. Я преуспел, чтобы получить претензии, но как я могу его изменить? – MilanM