Опитвам се да внедря функция за влизане и има пренасочване след успех / неуспех с помощта на 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}