Я пытаюсь создать приложение, которое имеет возможность создавать учетные записи пользователей, которые имеют широкий диапазон разрешений.В настоящее время я использую встроенную систему идентификации ASP.NET Core, но я столкнулся с некоторыми проблемами, которых у меня не было, или я не нашел чистых решений, о которых мы расскажем позже.Это заставило меня задуматься о создании своего собственного механизма идентификации, который будет соответствовать моим потребностям.
Проблемы, с которыми я сталкиваюсь:
Я использую MySQL в качестве своегопровайдер базы данных и при создании таблиц базы данных мне было выдано следующее исключение "Указанный ключ был слишком длинным: максимальная длина ключа составляет 3072 байта" .Мне удалось решить эту проблему, переопределив метод OnModelCreating и вручную изменив значение HasMaxLength , используя следующий код
modelBuilder.Entity (). Свойство (ul => ul.LoginProvider) .HasMaxLength (36);
Это не красиво, но оно выполняет свою работу.
- Я хочу, чтобы мои пользователи могли добавлять несколько писем и несколько телефонных номеров на свои учетные записи.Встроенное удостоверение ASP.NET Core создает столбец электронной почты и номер телефона в таблице пользователей.Я знаю, что могу предотвратить создание этих столбцов, но я действительно не верю, что это правильное решение.По сути, мне нужно иметь таблицу, связанную с таблицей пользователей, в которой будут храниться электронные письма пользователей, и таблицу для телефонных номеров по тому же шаблону.
- Мое приложение сможет создавать динамические поля , а также будут иметь возможность предоставлять своим пользователям разрешения, относящиеся к этим полям (например, CanSee, CanEdit, CanDelete) .Встроенная система авторизации ролей не соответствует моим требованиям, и я видел много шума вокруг встроенной системы авторизации претензий.Я на самом деле читал, что реализация системы авторизации, которая довольно близка к тому, что мне нужно, очень сложна и очень сложна в обслуживании!
Мой вопрос, должен ли я использовать встроенный ASP.NetОсновная система идентификации для достижения моих целей, хотя я сталкиваюсь с такими проблемами?Существуют ли какие-либо решения моих проблем, о которых я не знаю, и которые облегчили бы мою жизнь при использовании базовой системы идентификации ASP.Net?Должен ли я создать свою собственную систему идентификации и, если да, насколько сложной и потенциально опасной будет такая система?