powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Релогин аккаунта при выдачи роли или удалении пользователя
83 сообщений из 83, показаны все 4 страниц
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760375
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Реализую небольшой проект, где необходимо применять роли, которые может назначать и снимать администратор. Использую стандартную реализацию IdentityUser, которая создается по дефолту. Выдать/забрать права/роль не проблема, а вот как обновить пользователю его сессию со стороны сервера чтобы недоступные пункты отобразились у него и чтобы это было без ручного перезахода пользователем на сайт. То есть обычный пользователь стал администратором, обновил тут же страницу и увидел несколько новых пунктов меню, которые ранее не были ему доступны. Или наоборот забрать, а сейчас получается, что забираю у пользователя права администратора или вообще удаляю его и пока он вручную не выйдет с аккаунта и не зайдет он все так же может выполнять все функции администратора.
Спасибо большое.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760424
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewувидел несколько новых пунктов меню, которые ранее не были ему доступны.обычно перелогин, т.к.кэшируется все подряд.
Вам наверно делать нечего. Или ТЗ такое?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760425
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewИли наоборот забрать, а сейчас получается, что забираю у пользователя права администратора или вообще удаляю его и пока он вручную не выйдет с аккаунта ипошли сообщение ему чтобы перелогинился.
Либо закрой его сессию если надо.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760432
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Тут даже не то чтобы делать нечего, а обычная логика, что если человека удалили с сайта, то он не может как обычно сидеть и редактировать документы/базу и тд. А сейчас получается, что сайт позволяет это сделать т.к. его сессия кэширована. В Startup.Auth есть такая строчка:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromSeconds(10),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});

в данном случае я поставил чтобы каждые 10 секунд проверялись на сервере все валидации, но считаю, что это глупо за ненадобностью грузить систему. Вот вы сказали разлогинить его, это считаю выходом, но как это сделать? через UserManager.SignOut я могу только себя отключить, а как отключить конкретного пользователя ?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760439
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Ну т.е. по логике мы из вопроса обновления прав пришли к вопросу:
Как обнулить или закрыть сессию юзверя?
Так?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760445
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
ну хоть как-то, мне сейчас и интересны сами способы и их реализация. Если можно обновить его права без релога, то вообще замечательно, если нельзя, то тоже ничего страшного, главное чтобы после обнуления пользователь не мог вносить корректировки в систему
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760455
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,

Пробуй когда надо установить validationInterval в 0.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        // Enables the application to validate the security stamp when the user logs in.
        // This is a security feature which is used when you change a password or add an external login to your account.  
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromSeconds(0),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760456
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Еще можно удалить куку. У тебя же полные права на сервере.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760460
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Я просто именно в веб часть ушел совсем недавно, до этого годы десктопных приложений и пока не знаю как достучаться до тех же кук для конкретного пользователя
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760462
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760476
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

что-то поискал по всем компонентам, но обновления (RefreshSignInAsync) так и не нашел
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760478
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статья по ASP.NET Core, свою версию вы не озвучили
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760480
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Извиняюсь. Я пока все делаю на ASP.NET MVC
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewShocker.Pro,

Извиняюсь. Я пока все делаю на ASP.NET MVCтогда уж какой версии)
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760489
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

последней, которую Visual Studio 2019 создает, предполагаю MVC 5
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760496
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewPetro123,

последней, которую Visual Studio 2019 создает, предполагаю MVC 5старьё)))
Пробуй:
Session.Clear();
Session.Abandon();
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760512
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

не помогло, если с пользователя проверять наличие прав, то они меняются, а вот функционал остается прежним
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760514
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

И почему вы говорите, что старье?) Я просто начал изучать с него чтобы следом на NetCore перейти
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760519
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewPetro123,

И почему вы говорите, что старье?) Я просто начал изучать с него чтобы следом на NetCore перейтитам смайлики. Изучайте и то и то.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760521
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewPetro123,

не помогло, если с пользователя проверять наличие прав, то они меняются, а вот функционал остается прежнимдобавьте редирект на логин форму
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760535
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Так редирект же меня перекинет, а не пользователя
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760538
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Есть внутренний и есть веешний.
Внешний говорит Ослику что надо перейти туда то, и пользователь увидит что урл сменился на урл логина.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760542
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

RedirectToActionPermament тоже делает переход только моего аккаунта, может я просто чего-то не понимаю. Хотя странно, что такой банальный вопрос, который реализован почти на каждом форуме и сайте в ограничении пользователю доступа (блокировка) реализуется не в 2 клика в asp.net ведь по сути это одно и то же, изменить права юзера.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760547
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewRedirectToActionPermament тоже делает переход только моего аккаунта, может я просто чего-то не понимаю.в каком смысле только вашего?
Делайте так:
- на форме Здравствуй <ИмяЛогина>
- в контроллере на кнопку делаете редирект на форму логина.
Значит с любого логина вы перейдёте после клика на форму.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760548
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewХотя странно, что такой банальный вопрос, который реализован почти на каждом форуме и сайте в ограничении пользователю доступа (блокировка) реализуется не в 2 клика в asp.net ведь по сути это одно и то же, изменить права юзера.
Откуда опыт про клики в "каждом форуме и сайте"?
Рассказывайте.
Пока у вас редирект простейший не выходит.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760554
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Не, ну сделать кнопку с редиректом не проблема, я просто делаю следующим образом:

Я (администратор) захожу в список пользователей, которые зарегистрированы на сервере. Второй браузер при этом авторизован простым пользователем без прав.
В списке пользователей выбираю нужного мне и нажимаю редактировать.
В редактировании выставляю чекбоксами роли, к которым привязаны какие-то разрешения и жму сохранить.
При сохранении отправляется Post запрос и пользователю в БД выдаются указанные роли.
Например я назначил ему роль администратора, как бы я не обновлял страницу пользователя пока он руками не нажмет "Logout (Выход)" и заново не войдёт, то он так и будет простым пользователем, а не админом, ну и наоборот.

Переходы (Redirect...) не сбрасывают текущую авторизацию пользователю и не загружают его обновленные данные.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760556
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

А про клики это просто просмотр кучи сайтов, где администрация мне давала/забирала права и при первом же F5 (обновлении страницы) я видел, что у меня все меняется
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760562
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewПереходы (Redirect...) не сбрасывают текущую авторизацию пользователю и не загружают его обновленные данные.
Давай будем меньше рассуждать и больше делать.
Итак:
skewRedirectToActionPermament тоже делает переход только моего аккаунта,
как это понимать?
Если в контроллере ты должен выполнить функцию с редиректом только для того кого надо и кого поменял?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760568
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

А как мне уквзать, что я должен сделать только этомк человеку у меня в функции
EditUser(AppIdentityUser user, string[] selectedRoles){
user.UpdateRoles(selectedRoles);
Session.Abord();
Session.Clear();
return RedirectToActionPermament("Login", "Account");
}

Код пишу с телефона по памяти, поэтому есть ошибки в синтаксисе но главное суть. Примерно так работает функция выбачи ролей. Как в ней сделать тогда переход для выбранного user ?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760572
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
В MVC 5 нужно подумать. Вот так будет работать?
- добавить в User доп поле-флаг например IsChangeRoles и при серъёзной правке с перелогином взводить флаг
- в контроллере
var userId = User.Identity.GetUserId();
var currentUser = await UserManager.FindByIdAsync(userId);
проверяем флаг currentUser.IsChangeRoles
- после логина этот флаг сбрасываем
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760573
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо ещё проще - тут ты писал:
skewесли с пользователя проверять наличие прав, то они меняются,
т.е. инфа обновилась из базы при правке в другой сессии админом?
Если да, то тут же тот флаг рядом и будет.
Что это особо опасный преступник и его надо срочно на форму логин.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760575
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Так если задавать флаг, то придется при каждом запросе, который совершает пользователь его проверять, а это думаю не правильно, ведь каждый раз придется стучаться в бд. Удивительно что нету чего-то такого, SignInManager.SignOut(SelectedUser); и ведь сайт умеет это делать - очищать хранимые куки если SecurityStamp пользователя был изменен:

OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))

Но это в автоматическом режиме, а ручной я не нашел.

Petro123 т.е. инфа обновилась из базы при правке в другой сессии админом?
Да, если заходить этим пользователем в личный кабинет, где я сделал отображение имеющихся ролей, то да, там все изменяется моментально, что логично т.к. данные тянутся с базы, а вот авторизация висит в куках или кэше и ее как-то нужно почистить
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760581
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760604
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewvalidateInterval: TimeSpan.FromMinutes(30),эта библиотека, а не сайт, лезет в базу каждые 30 мин.
А в ручном режиме ты сам через EF лезешь в базу.
Т.к. в базе данные меняются другим, то сама база не умеет сообщать коду наверху.
Приходится ждать F5 и запрашивать базу.
Тут выбирай.
Либо таймер жизни токена 20 минут, либо дольше, но сам лазишь в базу.
..
Делай вариант и не компасируй мозги.
Проверяй как решен вопрос в Core 2.1.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760627
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Так а что в базе мне менять? Роли успешно там меняются, но данные самой сессии ведь не в подключенной бд содержатся
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760631
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
У тебя код выше на редирект работает? Делает что нужно?
Значить вызвать его для того кого нужно.
Опять по кругу пошли?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760639
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Роли меняются, но мы договорились что нужен перелогин.
Полная очистка всего что висит на юзвере.
Уволили его.
Значит нужно событие от библиотеки onChangeDB.
Я думаю такого нет и надо спрашивать бд.
Либо куки с жизнью 10 минут.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760641
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Так вот код, который я привел делает редирект моего аккаунта, а не редактированного, измененный аккаунт по прежнему как находился на открытой вкладке и как бы я его не обновлял на F5 никуда не переходит
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760650
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Редирект админа не должен быть, т.к.для него не нужно ничего вызывать.
Причина понятна?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760674
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

все равно не совсем понимаю, из базы при помощи UserManager я могу достать IdentityUser по указанному id/почте. Но процедур, которые бы именно к найденному пользователю применили ряд мер по его дезавторизации я не нашел.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760678
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Мы код писать будем?
Или одни разговоры?
Не нашел юзверя текущего в GET запросе?
Показывай.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760683
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Тогда по порядку:

Класс пользователя, который использует UserManager.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 
  public class ApplicationUser : IdentityUser
    {
        public string Name { get; set; }
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            userIdentity.AddClaim(new Claim("Name", Name));
            return userIdentity;
        }
    }



Метод администратора, по выдачи роли:

Код: 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.
        [HttpPost]
        [ValidateAntiForgeryToken]
        [Authorize(Roles = "admin")]
        public async Task<ActionResult> EditAccount(ApplicationUser user, string[] selectedRoles)
        {
            try
            {
                if (user == null)
                    return HttpNotFound("Пользователь не найден");
               
                var selectedUser = await UserManager.FindByIdAsync(user.Id);
                if (selectedUser == null)
                    return HttpNotFound("Пользователь не найден");
            
                selectedUser.Email = user.Email;
                selectedUser.Name = user.Name;
                await UserManager.RemoveFromRolesAsync(selectedUser.Id, UserManager.GetRolesList().Select(s => s.Name).ToArray());
                await UserManager.AddToRolesAsync(selectedUser.Id, selectedRoles);
                await UserManager.UpdateAsync(selectedUser);
                
                TempData["StatusMessage"] = "Данные успешно обновлены";
            }
            catch {
                TempData["StatusMessage"] = "Что-то пошло не так, возникла ошибка при обновлении";}

            return RedirectToAction("AccountsList");
        }



При добавлении следующего кода в метод выдачи ролей ничего не меняется:
Код: c#
1.
2.
3.
4.
Session.Clear();
Session.Abandon();
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);



Как видим в методе EditAccount пользователю "selectedUser" обновляют все данные в БД.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760688
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Ты может прикалываешься тут на форуме?
Где код с Abandon?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760695
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
        [HttpPost]
        [ValidateAntiForgeryToken]
        [Authorize(Roles = "admin")]
        public async Task<ActionResult> EditAccount(ApplicationUser user, string[] selectedRoles)
        {
            try
            {
                if (user == null)
                    return HttpNotFound("Пользователь не найден");
               
                var selectedUser = await UserManager.FindByIdAsync(user.Id);
                if (selectedUser == null)
                    return HttpNotFound("Пользователь не найден");
            
                selectedUser.Email = user.Email;
                selectedUser.Name = user.Name;
                await UserManager.RemoveFromRolesAsync(selectedUser.Id, UserManager.GetRolesList().Select(s => s.Name).ToArray());
                await UserManager.AddToRolesAsync(selectedUser.Id, selectedRoles);
                await UserManager.UpdateAsync(selectedUser);
                Session.Clear();
                Session.Abandon();
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
                TempData["StatusMessage"] = "Данные успешно обновлены";
            }
            catch {
                TempData["StatusMessage"] = "Что-то пошло не так, возникла ошибка при обновлении";}

            return RedirectToAction("AccountsList");
        }
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760705
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Не так. Надо в get.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760748
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

перенес это в Get метод, но ничего не поменялось

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
  [Authorize(Roles = "admin")]
        public async Task<ActionResult> AccountsList()
        {
            Session.Clear();
            Session.Abandon();
            Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
            Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
            return View(await UserManager.Users.ToListAsync());
        }
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760775
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
1. Не вижу что это Get
2. Добавить лог строку и показать тут
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760795
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        [HttpGet]
        [Authorize(Roles = "admin")]
        public async Task<ActionResult> AccountsList()
        {
            Session.Clear();
            Session.Abandon();
            Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
            Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
            return View(await UserManager.Users.ToListAsync());
        }



Добавил атрибут Get, а какую лог строку показать вам я не понял
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760805
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Что код реально вызывается. Первый раз замужем?
3. Где редирект
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Вам наверно рано делать динамический интерфейс или выбрасывать на логин юзверя.
Сделайте просто сайт калькулятор сначала.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760826
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Давайте по порядку с кодом и скринами:

Главная страница администратора


Главная страница второго пользователя с правами администратора


Список пользователей от лица главного администратора


Снимаю со второго пользователя роль администратора


Выполняется Post запрос и затем перенаправление на Get
Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
  [HttpPost]
        [ValidateAntiForgeryToken]
        [Authorize(Roles = "admin")]
        public async Task<ActionResult> EditAccount(ApplicationUser user, string[] selectedRoles)
        {
            try
            {
                if (user == null)
                    return HttpNotFound("Пользователь не найден");
               
                var selectedUser = await UserManager.FindByIdAsync(user.Id);
                if (selectedUser == null)
                    return HttpNotFound("Пользователь не найден");
            
                selectedUser.Email = user.Email;
                selectedUser.Name = user.Name;
                await UserManager.RemoveFromRolesAsync(selectedUser.Id, UserManager.GetRolesList().Select(s => s.Name).ToArray());
                await UserManager.AddToRolesAsync(selectedUser.Id, selectedRoles);
                await UserManager.UpdateAsync(selectedUser);
                
                TempData["StatusMessage"] = "Данные успешно обновлены";
            }
            catch {
                TempData["StatusMessage"] = "Что-то пошло не так, возникла ошибка при обновлении";}

            return RedirectToAction("Relogin");
        }

        [HttpGet]
        [Authorize(Roles = "admin")]
        public async Task<ActionResult> Relogin()
        {
            Session.Clear();
            Session.Abandon();
            Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
            Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10);
            return RedirectToAction("Login", "Account");
        }




Выполнение функции Relogin под отладкой




Администратор перенаправился на форму логина



тестовый аккаунт с которого сняли администратора все еще владеет правами админа, хотя роли admin у него нет



Перезашел тестовым аккаунтом руками, так он выглядит без прав

...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760833
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,

а где собственно проверка того, что доступно пользователю?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760835
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,

и какая-то логика у вас странная...

Администратор редактирует роли пользователя и вы его зачем-то отправляете на Relogin.
Вы понимаете, что администратору сбрасываете куку, а не пользователю?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760854
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewДавайте по порядку с кодом и скринами:нет, давайте то что вам говорят. Логи и редирект.
А то я вангую что вы ваньку валяете под другим логином.))
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760877
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Я и хочу узнать как мне удалить куки выбранному мною пользователю.
Реализация проверки проста через аттрибуты, которые ставятся на методы просмотра и редактирования списка пользоваетелей:
Код: c#
1.
 [Authorize(Roles = "admin")]


и в html странице

Код: html
1.
2.
3.
4.
@if (User.IsInRole("admin"))
                {
                    <li class="nav-item">@Html.ActionLink("Список пользователей сайта", "AccountsList", "Manage", null, new { @class = "nav-link" })</li>
                }
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760886
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewЯ и хочу узнать как мне удалить куки выбранному мною пользователю.выше тебе дали код. После редиректа проверь свои куки.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760888
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew
Код: c#
1.
 [Authorize(Roles = "admin")]

странный ты человек.
Когда работает админ с Ивановым, Иванов в отпуске.
И с его куками ничего не сделать.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760892
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewЯ и хочу узнать как мне удалить куки выбранному мною пользователю.Петя тебя троллит тем, что не говорит, что куки пользователю нужно удалять не при обработке запроса администратора, а при обработке запроса (любого) именно этого пользователя. А иначе как ты можешь сбросить куки пользователя, если он не сделал запрос.
Получается так, что ты должен иметь какой-то флаг, который говорит о том, что какому-то пользователю, как только он сделает следующий запрос, нужно сбросить куки.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760900
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Про троллю твоя придумка как всегда. Много выше сказано что Get нужен.
Вот только я на второй странице догадался что он в POST админа вкорячил код.
Не ожидал)
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760911
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Понятно, что когда "Иванов в отпуске" он никаких запросов не шлет, но мне то нужно его заставить перейти по запросу когда он "с отпуска вернется". А если он не станет переходить по ней, то так и будет всеми правами обладать. Причем почему-то я даже принудительно этого "Иванова" заставил выполнить Get запрос (Relogin), в котором происходил Sessin.Abadon(), но у него все равно отображение на страницах не поменялось.

Shocker.Pro,

с флагом вопрос возникает, получается его нужно ставить и проверять на каждый метод и класс, которые вообще есть на сайте чтобы ни одно его действие не произошло без очистки кук, что тоже, наверное, неправильно ?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760914
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Про троллю твоя придумка как всегда. Много выше сказано что Get нужен.
Вот только я на второй странице догадался что он в POST админа вкорячил код.на второй странице догадался, но продолжал "не замечать".

Petro123Много выше сказано что Get нужен.Почему только GET? Отлавливать нужно любое обращение уволенного пользователя, чтобы он и через POST не получил доступа.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760917
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewс флагом вопрос возникает, получается его нужно ставить и проверять на каждый метод и класс, которые вообще есть на сайте чтобы ни одно его действие не произошло без очистки кук, что тоже, наверное, неправильно ?Совершенно верно. Иначе он получит доступ, куда не следует. Но почему на каждый метод и класс? Сделай централизованно.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760920
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proно продолжал "не замечать".тут много ничего не замечающих)))
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760921
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewзаставил выполнить Getневозможно.
Выйдет из отпуска и будет Get.
Код будешь писать?)))
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760922
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПочему только GET?"не мешать все в кучу".
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760927
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Shocker.ProПочему только GET?"не мешать все в кучу".У пользователя может быть открыта страница. Если не перехватывать POST, то получится - его лишили доступа, но он может нажать кнопку и выполнить через POST запрещенное действие.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760935
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProPetro123пропущено...
"не мешать все в кучу".У пользователя может быть открыта страница. Если не перехватывать POST, то получится - его лишили доступа, но он может нажать кнопку и выполнить через POST запрещенное действие.еще раз.
Ты сказал верно, но после решения вопроса ЭЛЕМЕНТАРНОГО НА ДВУХ СТРАНИЦАХ.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760936
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

ну если так делать, тогда понятно, просто думал, что должен быть какой-то более автоматизированный способ в такой масштабной системе как asp net mvc, чем проверку делать отдельно через БД, а не просто возможность почистить чьи-то куки и снять авторизацию.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760948
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewну если так делать, тогда понятно, просто думал, что должен быть какой-то более автоматизированный способ в такой масштабной системе как asp net mvc, чем проверку делать отдельно через БД, а не просто возможность почистить чьи-то куки и снять авторизацию.Честно говоря, я не знаю, может и есть. Поэтому я с самого начала и лез в топик, ожидая, что проконсультирует кто-то более опытный. В данном случае просто прояснил непонятный момент.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760955
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewну если так делать, тогда понятнону наконец то))))).
Нельзя, не ходя в магазин, узнать что там нет хлеба (с)
Удачи!
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760956
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Petro123]skewКод будешь писать?)))

Да,пишу, пытался все же понять на чем остановиться)
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760960
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123skewну если так делать, тогда понятнону наконец то))))).
Нельзя, не ходя в магазин, узнать что там нет хлеба (с)
Удачи!

Это понятно, но у системы столько автоматических проверок, а проверить то, что пользователь больше не имеет какой-то из ролей система не может, нужно всю это автоматизацию получается перегонять в ручную проверку. Хотя казалось бы вопрос тривиален
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760983
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
В Core сменили метод авторизации напрочь.
Смотри там. Может решено.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760989
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewХотя казалось бы вопрос тривиаленза 10 минут и кука протухла разве не решение?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39760998
skew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

извиняюсь, я наверное Вам надоел уже :) но тут я больше не столь для конкретного решения, что прям нужно так и не иначе, а просто столкнулся с таким феноменом и для познавательных целей хотел узнать как его можно решить, ведь не сейчас, а когда-нибудь, но это будет важно. И вот вы решили другу дать права админа, а потом бац и он стал врагом, вы быстро лишаете его прав админа, а он за эти 10 минут грохает все, что у вас накопилось за 5 лет работы :)
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761018
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skew,
Ну дак в java тоже самое.
Если сессия, то ее отрубают.
Но об этом никто не знает в хибере, если кэш только первого уровня и админка исправлена в самой бд.
Как об этом узнать?
Делают sso, тогда на каждый get идет запрос на сервер авторизации.
Как то так.
...
Не бойся спрашивать бд или сервис. Это компромисс.
3. Делай один контекст для админки и юзверей.
Запроса к бд не будет.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761193
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС, а в чем проблема просто куку прибить? Или я чего-то недогоняю и есть какие-то ньюансы?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761204
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skewЭто понятно, но у системы столько автоматических проверок, а проверить то, что пользователь больше не имеет какой-то из ролей система не может, нужно всю это автоматизацию получается перегонять в ручную проверку. Хотя казалось бы вопрос тривиален
каким образом асп может это за вас автоматизировать если данные о доступных ролях находятся у вас в базе? Хотите мгновенной отмены прав - не кэшируйте клеймы в куках/токенах, и доставайте их на каждый запрос из базы или сессии. Только это прошлый век, сейчас именно что клеймы кэшируются т.к. в сочетании с токенами это дает массу преимуществ в современных системах. Помимо проблем типа "отозвал право, а оно все еще в куке" возможны куда более проблематичные сценарии, когда токен украден и хакер может делать что угодно от лица пользователя. Поэтому время их жизни делают максимально коротким, по-сути это все, что можно сделать.

skewа потом бац и он стал врагом, вы быстро лишаете его прав админа, а он за эти 10 минут грохает все, что у вас накопилось за 5 лет работы :)
он врагом стал непременно с момента, когда вы галочку поставили? Когда человека увольняют, то ему мгновенно перекрывают доступ к рабочему компьютеру и отзывают все права, стандартная практика в большинстве компаний
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761228
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatТС, а в чем проблема просто куку прибить? Или я чего-то недогоняю и есть какие-то ньюансы?ньюансы еще из прошлого тысячелетия и из клинт сервера - если Коля поставил галку в базе, то как Вася на клиенте об этом узнает?
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761373
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthatТС, а в чем проблема просто куку прибить? Или я чего-то недогоняю и есть какие-то ньюансы?ньюансы еще из прошлого тысячелетия и из клинт сервера - если Коля поставил галку в базе, то как Вася на клиенте об этом узнает?

Ну как - при аутентификации очередного запроса проверить палку в базе, прибить куку и отредиректить на страницу логина. Это если классицеское приложение. Если AJAX - то все тоже самое - запрос-то все равно будет, просто на клиенте результат хитрее надо будет обработать..
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761419
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Ты не читал топик. Он не хочет на все get, post ото всех, лазить в базу и проверять свежак инфу.
Вероятно жалеет базу данных или боится тормозов.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761568
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Ты не читал топик. Он не хочет на все get, post ото всех, лазить в базу и проверять свежак инфу.
Вероятно жалеет базу данных или боится тормозов.

Ну тогда в памяти всю шляпу кешировать. Или делать что-то типа на вебсокетах - но для подобной ерундовой задачи это вообще, по-моему, жесть.
...
Рейтинг: 0 / 0
Релогин аккаунта при выдачи роли или удалении пользователя
    #39761587
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Решений полно и без сокетов:
- сессии со списком подключенных
- время жизни кук поставить 3 минуты или даже одну
- не жалеть сервер для 10ти юзверов
-...
..
Верно сказал что задача жесть, поэтому послать постановщика подальше.
Лучше функционал делать и много зарабатывать. Это в тренде. А не диверсантов ловить.
...
Рейтинг: 0 / 0
83 сообщений из 83, показаны все 4 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Релогин аккаунта при выдачи роли или удалении пользователя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]