Je suis novice dans les services RESTful utilisant WebApi. J'ai une application Web frontale qui utilise FormsAuthentication pour authentifier les utilisateurs. Je suis capable d'utiliser la propriété User.Identity
sans aucun problème dans mes méthodes de contrôleur MVC.Récupération du Principal dans une méthode WebApi RESTful
Cependant, je veux utiliser Angular pour faire des appels Ajax à partir du navigateur pour les méthodes Restful dans WebApi. Le problème se produit avec le principal utilisateur dans ces méthodes - HttpRequestMessage.GetUserIdentity()
renvoie toujours null. En revanche, Thread.CurrentPrincipal
dans ces méthodes renvoie correctement l'identité de l'utilisateur actuellement authentifié. Mon contrôleur WebApi est décoré avec l'attribut Authorize
.
Qu'est-ce qui me manque c'est d'arrêter GetUserIdentity()
de fonctionner? Voici mon contrôleur.
[Authorize]
public class CategoryController : ApiController
{
public IEnumerable<ICategoryJson> Get(HttpRequestMessage request)
{
var user = request.GetUserPrincipal(); // returns null
var user1 = System.Threading.Thread.CurrentPrincipal; // returns authenticated user identity
return null;
}
}
Et voici mon appel Ajax.
$http.get("/api/Category", config).then(function (response) {
Array.prototype.push.apply(service.list, response.data);
service.listLoading = false;
});
à quel moment appelez-vous cette méthode dans votre API? HttpRequestMessage.GetUserIdentity() – Aram
J'ai ajouté du code à ma question –
La bonne façon d'obtenir est: user = this.User; La propriété utilisateur d'ApiController fournit le principal pour vous –