0

J'essaie d'envelopper ma tête autour de l'identité Asp.Net. Mais malheureusement, la documentation disponible n'est pas très claire ou je pense que c'est juste sur ma tête :(Quand les identités Asp.Net sont-elles créées et assignées à l'utilisateur?

Cependant, suivre est une compréhension de haut niveau basée sur la recherche et la lecture toute la journée. Par exemple, si un utilisateur affirme que son âge est de 30 ans, vous pouvez lui permettre d'afficher uniquement du contenu réservé aux adultes, mais s'il prétend avoir 17 ans, vous refusez l'accès. à lui/elle :). De plus, des rôles pour des utilisateurs tels que "Admin", "Super Users" ... peuvent être utilisés pour activer/désactiver l'accès. Si les utilisateurs ont un rôle "Admin", vous pouvez leur permettre d'accéder à une méthode d'action X.

Cependant, il y a beaucoup de choses qui me troublent et ne me permettent pas d'envelopper clairement ma tête autour d'elle.

Scénario

Supposons que je veux créer une nouvelle application avec un contrôleur. Ce contrôleur a deux méthodes d'action Add et Edit. Je suppose que je devrai deux demandes pour chaque utilisateur

new Claim { 
    UserId = 10, 
    ClaimType = "Can Add", 
    ClaimValue = null 
}, 

new Claim { 
    UserId = 10, 
    ClaimType = "Can Edit", 
    ClaimValue = null 
} 

new Claim { 
    UserId = 5, 
    ClaimType = "Can Edit", 
    ClaimValue = null 
} 

Dans ce cas, l'utilisateur avec l'ID = 10 « peut ajouter » et « Modification », mais l'utilisateur avec l'ID utilisateur = 5 « Puis Ajouter » par est impossible de modifier.

Quand ces revendications sont-elles créées et assignées à l'utilisateur? Est-ce que je crée ces revendications au besoin en les insérant manuellement dans le tableau AspNetUserClaims? Est-ce que je les assigne aux utilisateurs de leur profil?

Que se passe-t-il si j'ai besoin d'ajouter une nouvelle réclamation dans le futur, ai-je besoin d'assigner manuellement cette nouvelle réclamation à tous les utilisateurs manuellement? ou existe-t-il un moyen d'affecter ces revendications à un rôle par défaut dans lequel les utilisateurs peuvent hériter?

Ce n'est peut-être pas une bonne question, mais y répondre m'aidera à mieux comprendre l'identité.

Répondre

1

Les revendications doivent être définies lors de la connexion de l'utilisateur. Vous ne devez pas le définir directement dans la base de données. Voir this post pour savoir quand définir les revendications.

Une revendication est une information sur l'utilisateur. Vous pouvez ensuite utiliser cette information pour l'autorisation (ou toute autre chose).

Notez que vous devez toujours définir une valeur sur Claims, sinon vous risquez de rencontrer une erreur de revendication inexistante.

+0

Je suis maintenant plus confus. Les revendications sont-elles temporaires et disponibles pour une seule session ou sont-elles permanentes? Les palourdes sont-elles un endroit pour obtenir des informations sur l'utilisateur comme son nom, email, téléphone .... ou un endroit où je peux savoir ce qu'ils peuvent faire/accéder comme peuvent effectuer une opération X, ou les deux? Pour une raison quelconque, j'ai commencé à penser que le paquet d'autorisation peut ne pas prendre en charge l'autorisation de base de permission prête à l'emploi. Est-ce quelque chose que j'ai besoin de mettre en œuvre et en quelque sorte prendre les autorisations et les intégrer dans une réclamation personnalisée? – Jaylen

+0

L'autorisation n'est pas basée sur les revendications (Vous pouvez créer ClaimAuthorizationAttribute si vous le souhaitez, mais ce n'est pas le cas par défaut). Si vous souhaitez stocker de façon permanente le nom d'utilisateur, le courrier électronique ou le téléphone, placez-le dans l'utilisateur. Stocker des données dans l'utilisateur. Si vous avez besoin de champs calculés ou simplement d'informations partout, utilisez les revendications. Gardez à l'esprit que les revendications appartiennent à l'identité et non à l'utilisateur. –

+0

Je vois. Merci pour l'info. Coupler la dernière question, puis les revendications sont-elles temporaires, si oui quand sont-elles retirées de la base de données?En outre, l'autorisation de base de rôles est-elle la seule capacité d'autorisation disponible immédiatement? Et quel est le Authorize (Policy = "quelque chose") est utilisé pour? Encore une fois merci beaucoup pour les informations que vous avez fournies jusqu'à présent, il aide beaucoup à comprendre l'idée générale – Jaylen