¿Cómo configuro mi proyecto mvc / webapi para que un método webapi llamado desde una vista de afeitar no devuelva la página de inicio de sesión cuando no está autorizado?
Es una aplicación MVC5 que también tiene controladores WebApi para llamadas a través de javascript.
Los dos métodos a continuación
[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
}
se llaman a través del siguiente código angular:
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);
});
}]
);
Así que no he iniciado sesión y el primer método devuelve datos con éxito. el segundo método devuelve (en la función de éxito) datos que contienen el equivalente de una página de inicio de sesión. es decir, lo que obtendrías en mvc si solicitaras una acción de controlador que estuviera sellada con [Autorizar] y no estuvieras conectado.
Quiero que devuelva un 401 no autorizado, para que pueda mostrar diferentes datos para los usuarios en función de si están conectados o no. Idealmente, si el usuario ha iniciado sesión, quiero poder acceder a la propiedad de Usuario del Controlador para poder devolver datos específicos de ese Miembro.
ACTUALIZACIÓN: Dado que ninguna de las sugerencias a continuación parecen funcionar (cambios en Identity o WebAPI) he creado un ejemplo en bruto en github que debería ilustrar el problema.