如何重定向到SPA中的路线?

时间:2017-01-03 19:41:25

标签: angularjs asp.net-mvc authentication redirect identity

我在Ids3中使用外部提供程序完成了身份验证。 在用户进行身份验证之后,我的MVC主页被加载,这会引导角度应用程序:

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

当用户通过其中一个外部提供商进行身份验证时,我应该以角度重定向到特定页面:

https://myaddress/DevPortalApp/something

问题是,对于常规重定向,我陷入了身份验证循环。如何从家庭控制器重定向到特定的角度页面?

 var externalLogin = accessToken.externalLogin;

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

2 个答案:

答案 0 :(得分:1)

您需要使用here的角度路由器, 您很快就可以使用$state.go('your-new-view')

在app.js文件中创建状态列表 -

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

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

在您的家庭控制器中,您只需使用$state.go('someState')

添加重定向即可

答案 1 :(得分:0)

将ASP.Net MVC Route与Angular Route集成的方法很少。

我个人喜欢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") });