2017-01-03 3 views
0

Ich habe Authentifizierung mit externen Provider in Ids3 getan. Nachdem der Benutzer authentifiziert, mein MVC-Homepage geladen wird, die die Winkel App als solche Schopf aus dem Sumpf:Wie zu einer Route in SPA umleiten?

@section AppScripts { 
    @Scripts.Render("~/bundles/Swagger") 
    @Scripts.Render("~/bundles/DevPortalApp") 
} 

Wenn der Benutzer über einen der externen Anbieter authentifiziert, ich soll auf eine bestimmte Seite in Winkel umleiten :

https://myaddress/DevPortalApp/something 

Das Problem ist, dass mit regulären Weiterleitungen ich in der Authentifizierungsschleife stecken bin. Wie kann ich von meinem Home-Controller auf eine bestimmte eckige Seite umleiten?

var externalLogin = accessToken.externalLogin; 

// Check if its from external 
if (externalLogin.Value != null) 
{ 
    var isValid = await externalLoginService.ValidateAccessToken(accessToken); 
    RedirectToAction("~/#/myURLRedirect"); 
} 
+1

Verwirren Sie nicht mit Routing zu viel ... Ich empfehle Logik an den Authentifizierungsteil Hinzufügen zur Authentifizierung zu überprüfen umzuleiten, wenn vorhanden oder weitermachen, wenn es fehlt. Dies ist für die SPA-Authentifizierung üblich. – MattSizzle

+0

Was ich versuche zu tun, aber die Weiterleitung endet immer in der Schleife. – ZeroCool

Antwort

1

Sie müssen von here Winkel Router verwenden, in Kürze Sie $state.go('your-new-view')

In Ihrem app.js erstellen Datei verwenden, können die Zustände Listen-

$stateProvider 
.state('someState', { 
    url: '/someState', 

    templateUrl: 'templates/Swagger.html', 
    controller: 'Swagger' 
}) 

Und in Ihrem Hause Controller Sie können nur umleiten mit $state.go('someState')

+0

Ich habe genau das getan und es hat funktioniert. Ich nehme an, es gibt keine Möglichkeit für den MVC-Controller, sich der Winkel-Routing-Logik bewusst zu sein, und wenn sich meine gesamte App in der Home-Ansicht befindet, bleibt mir nichts anderes übrig, als die Umleitung auf der Client-Seite zu verwenden. Vielen Dank! – ZeroCool

0

Es gibt einige verschiedene Möglichkeiten, ASP.Net zu integrieren MVC Route mit Winkelroute.

Ich persönlich mag Miguel Castro's approach, die *catchall in ASP.Net MVC verwendet, und dann an Angular übergeben. Dann lassen Sie Angular auf der Client-Seite behandeln.

Sie können meinen funktionierenden Beispielcode unter GitHub eingeben.

MVC Route

routes.MapRoute(
    name: "Users", 
    url: "users/{*catchall}", 
    defaults: new { controller = "Users", action = "Index" }); 

Angular Route

$routeProvider 
    .when(rootPath + "users", { 
     template: "<user-list></user-list>", 
     caseInsensitiveMatch: true 
    }) 
    .otherwise({ redirectTo: (rootPath + "users") }); 
Verwandte Themen