Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

accès au nom d'utilisateur dans le contrôleur d'api Web lorsque la table de base de données stocke l'utilisateur sous forme d'entier

Du point de vue de l'API Web ASP.NET, l'utilisation du fournisseur d'appartenance et de FormsAuthentication est déjà compliquée, alors pourquoi pas la jointure ? :) Quoi qu'il en soit, en supposant que votre API Web est consommée uniquement par les clients Web et que FA est cool, vous pouvez utiliser les UserData du ticket FA pour mettre l'ID utilisateur. De cette façon, vous n'avez pas besoin d'obtenir l'ID en appuyant à chaque fois sur votre base de données. Mais vous devrez créer le ticket vous-même et ne pas laisser l'implémentation par défaut le faire pour vous. Ensuite, dans l'événement PostAuthenticateRequest, vous pouvez lire l'ID utilisateur à partir du ticket et le définir dans l'identité. Bien sûr, vous devez créer votre propre identité personnalisée pour cela avec une propriété ID ou si vous êtes sur .NET 4.5, vous pouvez utiliser FormsIdentity lui-même mais vous pouvez utiliser la revendication NameIdentifier pour stocker l'ID, peut-être. Vérifiez ceci - ASP.NET MVC - Définir une IIdentity ou IPrincipal personnalisée .