Mvc / webapi projemi, ustura görünümünden çağrılan bir webapi yönteminin yetkisiz olduğunda giriş sayfasını döndürmemesi için nasıl yapılandırabilirim?
Javascript üzerinden aramalar için WebApi denetleyicileri de olan bir MVC5 uygulaması.
Aşağıdaki iki yöntem
[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
}
aşağıdaki açısal kod ile çağrılır:
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);
});
}]
);
Bu yüzden giriş yapmadım ve ilk yöntem başarıyla veri döndürüyor. ikinci yöntem, bir giriş sayfasının eşdeğerini içeren verileri (başarı işlevinde) döndürür. mesela [Yetkilendir] ile damgalanmış ve giriş yapmadığınız bir denetleyici eylemi isteseydiniz mvc'de alacağınız şey.
Kullanıcıların oturum açmış olup olmadıklarına bağlı olarak farklı veriler görüntüleyebilmeleri için yetkisiz bir 401 döndürmesini istiyorum. İdeal kullanıcı oturum açtıysanız, bu Üyeye özgü verileri döndürebilmek için Kontrolörün Kullanıcı özelliğine erişmek istiyorum.
GÜNCELLEME: Aşağıdaki önerilerin hiçbiri artık işe yaramadığı için (Identity veya WebAPI'de yapılan değişiklikler) , sorunu göstermesi gereken github'da ham bir örnek oluşturdu .