Могу ли я просто использовать Session ["role"] = "theRole", или это будет плохой практикой, поэтому я бы создал свой собственный атрибут авторизации, где я собираюсь посмотреть сеансМожно ли использовать ключ в сеансе для роли текущего пользователя?
ответ
Я бы посоветовал не принимать его. .Net уже имеет множество встроенных функций для реализации функций безопасности. Не заново изобретайте колесо, особенно там, где это касается безопасности.
Вам не нужно внедрять поставщик членства. Все, что вам нужно сделать, это установить HttpContext.User
на заказ IPrincipal, и вы можете использовать User.IsInRole("role")
и [AuthorizeAttribute(Roles="role")]
.
Я бы предположил, что информация о роли больше подходит для авторизационного билета, чем сеанс. Сохранение данных в сеансе может вызвать дополнительные проблемы синхронизации продолжительности сеанса с использованием срока действия лицензии на авторизацию. Возможно, сессия закончилась, пока пользователь все еще выполнил вход в систему.
Это не плохой, но хорошим принципом является использование объекта Principal и использование поставщика членства для ответа на ваши запросы для ролей.
Мне нравится, как вы использовали «принцип» и «принцип» в том же предложении. : x –
Возможно, вам нужно перечитать предложение. Я говорил о принципе, и принцип предполагает использование Принципала. Для ясности вы можете заменить принцип слова «общей практикой». – Kangkan
Как правило, в любое время, когда вы переворачиваете свою собственную безопасность, в лучшем случае это сомнительно. Есть ли причина, по которой вы не можете использовать встроенный объект User и метод IsInRole для определения?
Что вызывает сомнение и почему? Роллинг собственной безопасности или кеширование роли в сеансе? – DOK
, чтобы использовать встроенный IsInRole, вы должны использовать asp.net roleprovider или создать пользовательский, но вы должны реализовать стандартную версию, в которой есть много вещей, которые мне нужно будет просто оставить, чтобы не бросать реализовать исключение – Omu
Gee ... Я * никогда * не сделал это, и я использовал его как минимум в 10 приложениях на производстве. user.IsInRole («MyAdminGroup») .... –
Или если у вас есть роли пользовательских безопасности вы можете построить у вас есть классы, содержащие всю необходимую информацию, то после Войти сохранить весь класс к сессии, чтобы сохранить запрашивая dabase каждый раз вам нужна информация
на заказ авторизовать атрибут лучше, так как его легко вводить в действие, а также есть одно место, где находится ваша логика аутентификации/авторизации.
Вместо создания новой переменной сеанса, как об использовании существующего HttpContext.Current.User? То есть в пространстве имен System.Security.Principal.
Он имеет множество функций, которые вы можете заполнить, а затем проверить с помощью if (thisUser.IsInRole("admin"))
...
Только для целей иллюстрации, вот один из способов заполнения ролей в вручную с проверкой подлинности пользователя. В большинстве случаев у вас уже есть аутентифицированный пользователь.
System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
string[] roles = { "admin" };
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
Вы не можете заполнить этот массив – Omu
- 1. Назначить текущего пользователя в сеансе для тестов
- 2. Codeigniter: сохранение роли пользователя в сеансе
- 3. Получить все роли для текущего пользователя
- 4. Как запросить роли текущего пользователя
- 5. Можно ли хранить хэш пароля пользователя в сеансе? PHP
- 6. Как получить все роли для текущего пользователя?
- 7. Пытается получить доступ к роли текущего пользователя
- 8. WEB API Forms Authentication - Где можно установить роли для пользователя
- 9. Ключ шифрования: Можно ли использовать обфускацию?
- 10. Можно ли использовать мьютекс, чтобы проверить, работает ли MS Word во входном сеансе пользователя в .NET?
- 11. Можно ли использовать в качестве поставщика роли пользовательский UserNamePasswordValidator?
- 12. Как заставить пользователя иметь более одной роли в сеансе
- 13. Можно ли сохранить свойства позиции в сеансе?
- 14. Можно ли использовать vimgrep для визуального выбора текущего файла?
- 15. Можно ли использовать натуральный ключ для GenericForeignKey в Django?
- 16. Можно ли ограничить доступ пользователя/роли к TFS расширением файла?
- 17. Можно ли использовать Android AGPS для поиска текущего местоположения?
- 18. Можно ли использовать шаблон haskell для получения имени текущего файла?
- 19. Можно ли использовать составной первичный ключ?
- 20. Расшифровка/шифрование пользователя в PHP | сохраняя ключ в сеансе
- 21. Добавление роли для пользователя
- 22. Пользовательский поставщик членства в роли пользователя: как установить определенные роли для пользователя, чтобы использовать метод HttpContext.User.IsInRole?
- 23. Можно ли хранить небольшой объект в сеансе?
- 24. JSP использовать данные текущего пользователя
- 25. Можно ли получить текущие роли Пользователя в удаленном методе в Loopback?
- 26. Списка для текущего пользователя
- 27. Можно ли использовать секретный ключ RSA для шифрования сообщения
- 28. Можно ли использовать пароль пользователя python-ldap?
- 29. можно ли использовать внешний ключ для перечисления таблицы?
- 30. Можно ли импортировать роли в незанятую пьесу?
Любой шанс, который вы могли бы предоставить для нас простым примером?Я узнаю об этом прямо сейчас, и ваш ответ кажется отличным, но пример будет действительно полезен. – Worthy7