Comment configurer mon projet mvc / webapi afin qu'une méthode webapi appelée à partir d'une vue rasoir ne renvoie pas la page de connexion lorsqu'elle n'est pas autorisée?
C'est une application MVC5 qui a également des contrôleurs WebApi pour les appels via javascript.
Les deux méthodes ci-dessous
[Route("api/home/LatestProblems")]
[HttpGet()]
public List<vmLatestProblems> LatestProblems()
{
// Something here
}
[Route("api/home/myLatestProblems")]
[HttpGet()]
[Authorize(Roles = "Member")]
public List<vmLatestProblems> mylatestproblems()
{
// Something there
}
sont appelés via le code angulaire suivant:
angular.module('appWorship').controller('latest',
['$scope', '$http', function ($scope,$http) {
var urlBase = baseurl + '/api/home/LatestProblems';
$http.get(urlBase).success(function (data) {
$scope.data = data;
}).error(function (data) {
console.log(data);
});
$http.get(baseurl + '/api/home/mylatestproblems')
.success(function (data) {
$scope.data2 = data;
}).error(function (data) {
console.log(data);
});
}]
);
Je ne suis donc pas connecté et la première méthode renvoie les données avec succès. la deuxième méthode renvoie (dans la fonction de succès) des données qui contiennent l'équivalent d'une page de connexion. c'est-à-dire ce que vous obtiendriez dans mvc si vous demandiez une action de contrôleur qui était estampillée avec [Authorize] et que vous n'étiez pas connecté.
Je veux qu'il renvoie un 401 non autorisé, afin que je puisse afficher différentes données pour les utilisateurs en fonction de s'ils sont connectés ou non. Idéalement, si l'utilisateur est connecté, je veux pouvoir accéder à la propriété Utilisateur du contrôleur afin de pouvoir renvoyer des données spécifiques à ce membre.
MISE À JOUR: Étant donné qu'aucune des suggestions ci-dessous ne semble plus fonctionner (changements dans Identity ou WebAPI), ive a créé un exemple brut sur github qui devrait illustrer le problème.