|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Не, ну сделать кнопку с редиректом не проблема, я просто делаю следующим образом: Я (администратор) захожу в список пользователей, которые зарегистрированы на сервере. Второй браузер при этом авторизован простым пользователем без прав. В списке пользователей выбираю нужного мне и нажимаю редактировать. В редактировании выставляю чекбоксами роли, к которым привязаны какие-то разрешения и жму сохранить. При сохранении отправляется Post запрос и пользователю в БД выдаются указанные роли. Например я назначил ему роль администратора, как бы я не обновлял страницу пользователя пока он руками не нажмет "Logout (Выход)" и заново не войдёт, то он так и будет простым пользователем, а не админом, ну и наоборот. Переходы (Redirect...) не сбрасывают текущую авторизацию пользователю и не загружают его обновленные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 22:55 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, А про клики это просто просмотр кучи сайтов, где администрация мне давала/забирала права и при первом же F5 (обновлении страницы) я видел, что у меня все меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 22:56 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skewПереходы (Redirect...) не сбрасывают текущую авторизацию пользователю и не загружают его обновленные данные. Давай будем меньше рассуждать и больше делать. Итак: skewRedirectToActionPermament тоже делает переход только моего аккаунта, как это понимать? Если в контроллере ты должен выполнить функцию с редиректом только для того кого надо и кого поменял? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 23:15 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, А как мне уквзать, что я должен сделать только этомк человеку у меня в функции EditUser(AppIdentityUser user, string[] selectedRoles){ user.UpdateRoles(selectedRoles); Session.Abord(); Session.Clear(); return RedirectToActionPermament("Login", "Account"); } Код пишу с телефона по памяти, поэтому есть ошибки в синтаксисе но главное суть. Примерно так работает функция выбачи ролей. Как в ней сделать тогда переход для выбранного user ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 23:34 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, В MVC 5 нужно подумать. Вот так будет работать? - добавить в User доп поле-флаг например IsChangeRoles и при серъёзной правке с перелогином взводить флаг - в контроллере var userId = User.Identity.GetUserId(); var currentUser = await UserManager.FindByIdAsync(userId); проверяем флаг currentUser.IsChangeRoles - после логина этот флаг сбрасываем ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 00:03 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Либо ещё проще - тут ты писал: skewесли с пользователя проверять наличие прав, то они меняются, т.е. инфа обновилась из базы при правке в другой сессии админом? Если да, то тут же тот флаг рядом и будет. Что это особо опасный преступник и его надо срочно на форму логин. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 00:05 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Так если задавать флаг, то придется при каждом запросе, который совершает пользователь его проверять, а это думаю не правильно, ведь каждый раз придется стучаться в бд. Удивительно что нету чего-то такого, SignInManager.SignOut(SelectedUser); и ведь сайт умеет это делать - очищать хранимые куки если SecurityStamp пользователя был изменен: OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) Но это в автоматическом режиме, а ручной я не нашел. Petro123 т.е. инфа обновилась из базы при правке в другой сессии админом? Да, если заходить этим пользователем в личный кабинет, где я сделал отображение имеющихся ролей, то да, там все изменяется моментально, что логично т.к. данные тянутся с базы, а вот авторизация висит в куках или кэше и ее как-то нужно почистить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 00:41 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 01:50 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skewvalidateInterval: TimeSpan.FromMinutes(30),эта библиотека, а не сайт, лезет в базу каждые 30 мин. А в ручном режиме ты сам через EF лезешь в базу. Т.к. в базе данные меняются другим, то сама база не умеет сообщать коду наверху. Приходится ждать F5 и запрашивать базу. Тут выбирай. Либо таймер жизни токена 20 минут, либо дольше, но сам лазишь в базу. .. Делай вариант и не компасируй мозги. Проверяй как решен вопрос в Core 2.1. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 07:18 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Так а что в базе мне менять? Роли успешно там меняются, но данные самой сессии ведь не в подключенной бд содержатся ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:30 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, У тебя код выше на редирект работает? Делает что нужно? Значить вызвать его для того кого нужно. Опять по кругу пошли? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:36 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, Роли меняются, но мы договорились что нужен перелогин. Полная очистка всего что висит на юзвере. Уволили его. Значит нужно событие от библиотеки onChangeDB. Я думаю такого нет и надо спрашивать бд. Либо куки с жизнью 10 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:53 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Так вот код, который я привел делает редирект моего аккаунта, а не редактированного, измененный аккаунт по прежнему как находился на открытой вкладке и как бы я его не обновлял на F5 никуда не переходит ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:54 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, Редирект админа не должен быть, т.к.для него не нужно ничего вызывать. Причина понятна? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:03 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, все равно не совсем понимаю, из базы при помощи UserManager я могу достать IdentityUser по указанному id/почте. Но процедур, которые бы именно к найденному пользователю применили ряд мер по его дезавторизации я не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:32 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, Мы код писать будем? Или одни разговоры? Не нашел юзверя текущего в GET запросе? Показывай. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:36 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Тогда по порядку: Класс пользователя, который использует UserManager. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Метод администратора, по выдачи роли: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
При добавлении следующего кода в метод выдачи ролей ничего не меняется: Код: c# 1. 2. 3. 4.
Как видим в методе EditAccount пользователю "selectedUser" обновляют все данные в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:44 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, Ты может прикалываешься тут на форуме? Где код с Abandon? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:47 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Я же написал, что при добавлении ничего не меняется. Или я его не так применяю ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:05 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, Не так. Надо в get. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:15 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, перенес это в Get метод, но ничего не поменялось Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:04 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, 1. Не вижу что это Get 2. Добавить лог строку и показать тут ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:37 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
Petro123, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Добавил атрибут Get, а какую лог строку показать вам я не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:51 |
|
Релогин аккаунта при выдачи роли или удалении пользователя
|
|||
---|---|---|---|
#18+
skew, Что код реально вызывается. Первый раз замужем? 3. Где редирект ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 13:02 |
|
|
start [/forum/topic.php?fid=18&msg=39760805&tid=1355056]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 152ms |
0 / 0 |