Wie konfiguriere ich mein mvc / webapi-Projekt so, dass eine aus einer Rasiereransicht aufgerufene Webapi-Methode die Anmeldeseite nicht zurückgibt, wenn sie nicht autorisiert ist?
Es ist eine MVC5-Anwendung, die auch WebApi-Controller für Anrufe über Javascript enthält.
Die beiden folgenden Methoden
[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
}
werden über den folgenden Winkelcode aufgerufen:
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);
});
}]
);
Ich bin also nicht angemeldet und die erste Methode gibt erfolgreich Daten zurück. Die zweite Methode gibt (in der Erfolgsfunktion) Daten zurück, die das Äquivalent einer Anmeldeseite enthalten. dh was würden Sie in mvc erhalten, wenn Sie eine Controller-Aktion anfordern würden, die mit [Authorize] versehen ist und Sie nicht angemeldet sind.
Ich möchte, dass ein 401 nicht autorisiert zurückgegeben wird, damit ich verschiedene Daten für Benutzer anzeigen kann, je nachdem, ob sie angemeldet sind oder nicht. Wenn der Benutzer angemeldet ist, möchte ich idealerweise auf die Benutzereigenschaft des Controllers zugreifen können, damit ich Daten zurückgeben kann, die für dieses Mitglied spezifisch sind.
UPDATE: Da keiner der folgenden Vorschläge mehr zu funktionieren scheint (Änderungen an Identität oder WebAPI), habe ich ein Rohbeispiel für Github erstellt, das das Problem veranschaulichen soll.