Como configuro meu projeto mvc / webapi para que um método webapi chamado de uma exibição de navalha não retorne a página de login quando ela não é autorizada?
É um aplicativo MVC5 que também possui controladores WebApi para chamadas via javascript.
Os dois métodos abaixo
[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
}
são chamados pelo seguinte 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);
});
}]
);
Portanto, não estou logado e o primeiro método retorna dados com êxito. o segundo método retorna (na função de sucesso) dados que contêm o equivalente a uma página de login. ou seja, o que você obteria no mvc se solicitasse uma ação do controlador que estivesse estampada com [Autorizar] e você não estivesse logado.
Quero que ele retorne um 401 não autorizado, para que eu possa exibir dados diferentes para os usuários com base em se eles estão conectados ou não. Idealmente, se o usuário estiver conectado, desejo poder acessar a propriedade User do Controlador para que eu possa retornar dados específicos para esse Membro.
ATUALIZAÇÃO: Como nenhuma das sugestões abaixo parece funcionar mais (alterações em Identity ou WebAPI), criei um exemplo bruto no github que deve ilustrar o problema.