Bagaimana cara mengkonfigurasi proyek mvc / webapi saya sehingga metode webapi yang dipanggil dari tampilan silet tidak mengembalikan halaman login saat itu tidak sah?
Ini adalah aplikasi MVC5 yang juga memiliki pengontrol WebApi untuk panggilan melalui javascript.
Dua metode di bawah ini
[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
}
dipanggil melalui kode sudut berikut:
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);
});
}]
);
Jadi saya tidak masuk dan metode pertama berhasil mengembalikan data. metode kedua mengembalikan (dalam fungsi keberhasilan) data yang berisi setara dengan halaman login. yaitu apa yang akan Anda dapatkan di MVC jika Anda meminta tindakan pengontrol yang dicap dengan [Otorisasi] dan Anda tidak masuk.
Saya ingin mengembalikan 401 tanpa izin, sehingga saya dapat menampilkan data yang berbeda untuk pengguna berdasarkan apakah mereka masuk atau tidak. Idealnya jika pengguna login saya ingin dapat mengakses properti Pengguna Pengendali sehingga saya dapat mengembalikan data khusus untuk Anggota itu.
PEMBARUAN: Karena tidak ada saran di bawah ini yang tampaknya berfungsi lagi (perubahan pada Identity atau WebAPI) ive membuat contoh mentah tentang github yang seharusnya menggambarkan masalah tersebut.