Ich habe eine großartige Antwort auf SO gefunden, die beschreibt So richten Sie benutzerdefinierte Benutzerrollen ein , und ich habe das gleiche in meinem Projekt getan. Also in meinem Login-Service habe ich:
%Vor%Und in Global.asax.cs habe ich (wörtlich von der anderen Antwort kopiert):
%Vor% Dann habe ich in meiner Klasse ServicesController
:
Ich melde mich als Benutzer mit der Rolle "admin" an, und das funktioniert. Dann rufe ich / services / doadminstuff - und ich bekomme Zugriff verweigert, obwohl, wenn ich einen Haltepunkt in Global.asax.cs setzen, kann ich sehen, dass meine Rollen "admin" enthalten. Wenn ich das erste Attribut Authorize
(mit Rollen) auskommentiere und einfach ein plain vanilla Authorize
benutze, kann ich auf den Dienst zugreifen.
Ich muss hier etwas Kritisches vermissen - aber wo soll ich anfangen?
Ich würde empfehlen, dass Sie anstelle von Application_AuthenticateRequest
ein benutzerdefiniertes Attribut verwenden:
und dann:
%Vor% Es ist auch sehr wichtig sicherzustellen, dass bei der Anmeldung ein Authentifizierungscookie ausgegeben wird, da Sie eine XML-Datei zurückgeben. Verwenden Sie FireBug, um zu prüfen, ob der Authentifizierungscookie ordnungsgemäß gesendet wird, wenn Sie versuchen, auf die URL /services/doadminstuff
zuzugreifen.
Ich würde zuerst die Hauptzuweisung ändern:
%Vor%wie ASP.NET Dokumentation steht.
Tags und Links asp.net-mvc asp.net