Як налаштувати проект 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, якби ви попросили дії контролера, на якому було позначено [Авторизація], і ви не ввійшли в систему.
Я хочу, щоб він повертав 401 несанкціоновано, щоб я міг відображати різні дані для користувачів на основі того, чи вони ввійшли чи ні. В ідеалі, якщо користувач увійшов у систему, я хочу мати доступ до властивості Користувача контролера, щоб я міг повернути дані, специфічні для цього Учасника.
ОНОВЛЕННЯ: Оскільки, здається, жодна з наведених нижче пропозицій не працює (зміни в Identity або WebAPI), ive створив грубний приклад на github, який повинен ілюструвати проблему.