Я настраиваю приложение, используя ASP.NET Core Identity, и, несмотря на тщательное прочтение этой темы, я изо всех сил пытаюсь найти подходящее соответствие моим требованиям.
Пользователи, знакомые с концепцией subredditReddit может хорошо понять мое требование, так как понятия очень похожи.
По сути, у меня есть требование, когда пользователь может быть модератором одной "области" (аналогично subreddit) и просто быть "Пользователь "в другой" области ".
То, что сводится к тому, что когда пользователь входит в систему, мне нужно знать его роли в каждой области.
Я борюсь с тем, что этона самом деле означает в терминах ASP.NET Core Identity AspNetUserClaims и AspNetRoles / AspNetUserRoles.
Я рассматриваю определение AspNetRoles следующим образом:
Id Name
1000 User
2000 Junior Moderator
3000 Senior Moderator
Затем настройка AspNetUserClaims выглядит так:
Id UserId ClaimType ClaimValue
1 1 area:public1 1000
2 1 area:private1 2000
Это будет означать, что пользователь с идентификатором 1 является «пользователем» в области «public1» и младшим модератором в области «private1».
У меня есть номерпроблемы с этим.
Во-первых, это нарушает первую нормальную форму, пытаясь вставить два значения в "ClaimType".
Во-вторых, ссылочная целостность отсутствует.
Если присмотреться к AspNetUserRoles, я вижу взаимосвязь между многими пользователями и ролями.Я не понимаю, как это будет работать, если я не определю каждую возможную роль для каждой возможной области как AspNetRole.Даже в этом случае до сих пор неясно, как бы я связал это с AspNetUserClaims безопасным способом.
Чтобы усложнить ситуацию, неясно, нужны ли мне только утверждения или комбинация утверждений и ролей.Следующий вопрос затрагивает эту тему, но я не вижу четкого пути, основанного на моих требованиях:
Рекомендации по ролям и утверждениям в ASP.NET Identity
Нет причины, по которой я не могу решить проблемы, с которыми сталкиваюсь, путем реализации решения, подобного приведенному выше, с утверждениями типа «area: public1», но это противоречит всему, что я понимаю в проектировании систем.
Учитываятребования, описанные выше, какова будет рекомендуемая реализация в ASP.NET Core Identity?