2016-06-16 34 views
2

Ich versuche benutzerdefinierte Authentifizierung mithilfe der Überladung von MobileServiceClient zu implementieren. I'have eine benutzerdefinierte Auth-Controller wie dieseAzure Mobile Apps benutzerdefinierte Authentifizierung

[MobileAppController] 
public class CustomAuthController : ApiController 
{ 
    public async Task<IHttpActionResult> Post([FromBody] JObject assertion) 
    { 
    ... 
    } 
} 

und innen Start Backend habe ich die Route

config.Routes.MapHttpRoute("CustomAuth", ".auth/login/CustomAuth",new { controller = "CustomAuth" }); 

Auf Client-Seite der Anruf:

var credentials = new JObject 
{ 
    ["email"] = username, 
    ["password"] = password 
};    
MobileServiceUser user; 
try 
{ 
    user = await MobileService.LoginAsync("CustomAuth", credentials); 
} 
catch (Exception ex) 
{ 
    Debug.WriteLine(ex.Message); 
    throw; 
} 

denke ich, alle es richtig ist aber ich kann den Controller nicht mit der LoginAsync-Methode aufrufen (im Debug habe ich einen Haltepunkt beim ersten Befehl des Controllers gesetzt). Und ich kann nicht einmal die Ausnahme sehen, weil der Catch-Block es nie erreicht hat. Aber ich kann Anfrage an CustomAuthController mit Postman zum Beispiel senden und in diesem Fall ist der Debug-Breakpoint erreicht ... Ich verstehe nicht warum !! Ich versuche, LoginAsync (das MobileServiceTokenAuthentication verwendet) dekompilierten Code ohne Erfolg zu debuggen ... bitte helfen! Am Backend-Seite ist meine benutzerdefinierte Authentifizierung mit Auth0 Delegation API gemacht.

+0

Können Sie mehr von Ihrem Kundencode zeigen? Wenn Sie Ihre Anmeldemethode nicht debuggen können, habe ich das Gefühl, dass Sie diese Methode nicht richtig erwarten. –

+0

mmm Ich denke nicht, weil der oben genannte Client-Aufruf innerhalb einer Methode erwartet wird, die eine Aufgabe zurückgibt, ist die Signatur 'async Task LoginAsync (String Benutzername, String-Passwort)' und die gesamte Kette gibt immer eine Aufgabe ... – andrekiba

Antwort

1

Sie müssen das [MobileAppController] Attribut aus dem Controller-Code entfernen. Dieses Attribut fügt eine Anforderung hinzu, dass der Aufruf einen Versionskopf enthält, und das Client-SDK sendet diese nicht für die Anmeldemethoden. Alternativ könnten Sie einen delegierenden Handler auf dem Client verwenden, um diesen Header zu injizieren, aber die serverseitige Änderung erfordert weniger Code. Im Kontext der benutzerdefinierten Authentifizierung bietet das Attribut keinen Vorteil, den ich mir vorstellen kann, daher sollte es sicher entfernt werden können.

+0

Danke Matt, ich hatte das nicht bemerkt und zu Recht sollte dieser Handler nicht mit dem Attribut gekennzeichnet werden. – andrekiba

Verwandte Themen