Как настроить проект mvc / webapi таким образом, чтобы метод webapi, вызываемый из вида бритвы, не возвращал страницу входа, если она не авторизована?
Это приложение MVC5, которое также имеет контроллеры WebApi для звонков через JavaScript.
Два метода ниже
[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
}
Вызываются через следующий угловой код:
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);
});
}]
);
Поэтому я не вошел в систему, и первый метод успешно возвращает данные. второй метод возвращает (в функции успеха) данные, которые содержат эквивалент страницы входа. то есть то, что вы получили бы в mvc, если бы вы запросили действие контроллера, помеченное [Authorize], и вы не вошли в систему.
Я хочу, чтобы он вернул 401 неавторизованным, чтобы я мог отображать разные данные для пользователей в зависимости от того, вошли они в систему или нет. В идеале, если пользователь вошел в систему, я хочу иметь возможность доступа к свойству пользователя контроллера, чтобы я мог возвращать данные, относящиеся к этому члену.
ОБНОВЛЕНИЕ: Поскольку ни одно из приведенных ниже предложений, похоже, больше не работает (изменения в Identity или WebAPI), я создал необработанный пример на github, который должен проиллюстрировать проблему.