/ / Ъглова UI маршрутизатор и експресен маршрутизатор - angularjs, express, ъглово-ui-router, passport.js

Ъглови UI маршрутизатор и експресен маршрутизатор - angularjs, express, ъглово-ui-router, passport.js

Опитвам се да внедря функция за влизане и има пренасочване след успех / неуспех с помощта на Express Router:

router.post("/login",
passport.authenticate("local", {successRedirect:"/dashboard", failureRedirect:"/login",failureFlash: true}),
function(req, res) {
res.redirect("/");
});

и след успешно влизане, имам Cannot GET /dashboard или в случай на повреда Cannot GET /login, Има ли несъвместимост между маршрутизирането на сървъра (Express) и от страна на клиента (ъглова UI рутер)? Трябва ли да използвам само един от рутера и кой?

Ето кода за рутера на потребителския интерфейс:

angular
.module("app", [
"ngAnimate",
"ngAria",
"ngCookies",
"ngResource",
"ngTouch"
])
.config( function ($stateProvider, $urlRouterProvider, $locationProvider){
$stateProvider
.state("login", {
url: "/login",
templateUrl: "views/login.html",
controller: "LoginCtrl"
})
.state("home", {
url: "",
templateUrl: "views/home.html",
controller: "HomeCtrl"
})
.state("home.dashboard", {
abstract: true,
url: "/dashboard",
templateUrl: "views/dashboard.html"
});

// For any unmatched url, send to /
$urlRouterProvider.otherwise("/");
$mdGestureProvider.skipClickHijack();
//remove the hashtag from URL
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
});

Отговори:

1 за отговор № 1

Вашият експресен маршрутизатор е наред. и това беше нормален формуляр за подаване, страницата ще се пренасочи правилно.

Но тъй като исканията се правят чрез Ajax от Angular App, тези пренасочвания не са известни на приложението и по този начин не прави нищо.

Направете таблото за управление или контролерът за вход, за да оцените състоянието на вход и след това да пренасочите от там.


1 за отговор № 2

Текущият код, който сте написали, не пренасочва към предния край, като генерира ново искане за GET, трябва да се справите с генерираните искания за GET.

във вашия случай

    router.get("/dashboard",function(req,res){
res.redirect("full path of the url which you use in browser")
});

или опитайте това

{successRedirect:"http://your front end domain/dashboard", failureRedirect:"http://your front end domain/login",failureFlash: true}