Система аутентификации для ASP.NET веб-приложений?
-
07-07-2019 - |
Вопрос
У меня есть кое-какой вопрос:
Как создать веб-приложение на основе ролей?Например, на форумах есть много типов пользователей, администратор, модератор и т.д...хранятся ли роли этих типов пользователей в базе данных или web.config?И когда пользователь входит на наш сайт, как управлять ролями этих пользователей?Короче говоря, я хочу узнать об авторизации и аутентификации.
Спасибо..
Решение
@Мавера:
По сути, это концепция наличия собственной таблицы users в вашей собственной базе данных, где вы можете управлять разрешениями и хранить регистрационную информацию (разумеется, правильно хэшированную).В случае многоуровневой схемы разрешений я обычно использую две или более таблиц, например:
TblUsers:
-----------------------------------------------------------------
| UserID (PK) | UserName | HashedPassword | PermissionLevel (FK)|
|---------------------------------------------------------------|
| 1 | BobTables| adfafs2312 | 2 |
-----------------------------------------------------------------
TblPermissions
-------------------------------------
| PermissionID (PK) | Description |
--------------------------------------
| 1 | User |
| 2 | SuperUser |
| 3 | Admin |
--------------------------------------
Вы можете добавить 3-ю таблицу, которая содержит отношение "Один ко многим" между TblPermissions, которое раскрывает фактические возможности, которые пользователю может быть разрешено выполнять.
Запрос пользователя был бы таким же простым, как:
SELECT TblUser.Username, TblPermissions.Description
FROM TblUsers, TblPermissions
WHERE TblUser.UserID = @UserID
AND TblUser.PermissionLevel = TblPermission.PermissionID;
Создайте пользовательский класс для инкапсуляции этой информации и сохраните ее в ASP.NET сеансе, когда они войдут в систему.
Другие советы
Ознакомьтесь с этими статьями и видео:
Я обнаружил, что встроенные схемы авторизации отлично подходят для простых ситуаций, когда вам нужно только в основном аутентифицировать тех, кто может входить и кто может выходить, но не подходят для пользовательских ситуаций, таких как наличие специальных учетных записей администратора и т.д.
В таких ситуациях я создал свою собственную схему аутентификации.