2017-01-03 5 views
0

Ids3の外部プロバイダを使用して認証が完了しました。ユーザーの後 は、次のような角度のアプリをブートストラップしている、私のMVCのホーム・ページがロードされ、認証:ユーザーが外部プロバイダの1つを介して認証するとSPAのルートにリダイレクトする方法は?

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

、私は角度で特定のページにリダイレクトするようになっています:

https://myaddress/DevPortalApp/something 

問題は、通常のリダイレクトでは認証ループに陥っていることです。ホームコントローラから特定の角ページにリダイレクトするにはどうすればよいですか?

あなたが hereからの角度のルータを使用する必要が
var externalLogin = accessToken.externalLogin; 

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

いけない混乱...私は、認証するかを確認し、存在するかどうかをリダイレクトするために、認証部にロジックを追加することをお勧めしますか行方不明の場合は続行するこれはSPAの認証に共通しています – MattSizzle

+0

私は何をしようとしていますが、リダイレクトは常にループ内で終了します。 – ZeroCool

答えて

1

、 すぐにあなたのapp.jsファイルで$state.go('your-new-view')

を使用することができます

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

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

そして、あなたのホームコントローラでのリスト - の状態を作成しますあなただけでリダイレクトを追加することができます$state.go('someState')

+0

私はそれを正確にやってしまいました。 MVCコントローラが角度ルーティングロジックを認識する方法がないと仮定し、アプリケーション全体が「ホーム」ビューにある場合は、クライアント側でリダイレクトを使用する以外に選択肢はありません。ありがとう! – ZeroCool

0

ASP.Netを統合する複数の方法がありますAngular Routeを使用したMVCルート。

私は個人的にはMiguel Castro's approachが好きで、ASP.Net MVCで*catchallを使用し、Angularに渡します。次に、Angularがクライアント側で処理するようにします。

作業サンプルコードをGitHubにフォークできます。ずっとへのルーティングと

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") }); 
関連する問題