2017-01-03 2 views
0

У меня была проверка подлинности с использованием внешнего провайдера в Ids3. После проверки подлинности пользователя, моя домашняя страница MVC загружается, который бутстрэпы углового приложения как например:Как перенаправить на маршрут в SPA?

@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"); 
} 
+1

не перепутать с маршрутизацией на много ... Я рекомендую добавить логику в части проверки подлинности для проверки подлинности и переадресовать, если присутствует или продолжить, если отсутствует. Это обычное явление для аутентификации SPA – MattSizzle

+0

Это то, что я пытаюсь сделать, но перенаправление всегда заканчивается в цикле. – ZeroCool

ответ

1

Вы должны использовать угловой маршрутизатор от here, в скором время вы можете использовать $state.go('your-new-view')

В вашем app.js создание файла состояние list-

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

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

И в вашем доме контроллере вы можете просто добавить перенаправление с $state.go('someState')

+0

Я закончил делать именно это, и это сработало. Я полагаю, что диспетчер MVC не знает о логике угловой маршрутизации, и если все мое приложение находится в режиме «Главная», у меня нет другого выбора, кроме как использовать перенаправление на стороне клиента. Благодаря! – ZeroCool

0

Существует несколько вариантов интеграции ASP.Net. Трасса MVC с угловым маршрутом.

Мне лично нравится Miguel Castro's approach, который использует ASP.NET MVC *catchall, а затем передает его на Угловой. Затем пусть угловая ручка на стороне клиента.

Вы можете изменить свой рабочий пример кода на 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") }); 
Смежные вопросы