Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 协调快车(护照)和安圭拉航线_Javascript_Angularjs_Node.js_Express_Passport.js - Fatal编程技术网

Javascript 协调快车(护照)和安圭拉航线

Javascript 协调快车(护照)和安圭拉航线,javascript,angularjs,node.js,express,passport.js,Javascript,Angularjs,Node.js,Express,Passport.js,我正在构建一个meanstack应用程序,并最终开始创建用户身份验证。为此,我遵循了以下教程: 现在,当我把它整合到我的项目中时,它是有效的,但只是部分有效。也就是说,似乎我唯一能正确导航的页面就是应用程序的主页。如果我单击任何链接或在地址栏中键入除home以外的内容,它会将我带回到登录屏幕 有哪些可能的原因 我的routes/index.js文件如下所示: var express = require('express'); var router = express.Router(); var

我正在构建一个meanstack应用程序,并最终开始创建用户身份验证。为此,我遵循了以下教程:

现在,当我把它整合到我的项目中时,它是有效的,但只是部分有效。也就是说,似乎我唯一能正确导航的页面就是应用程序的主页。如果我单击任何链接或在地址栏中键入除home以外的内容,它会将我带回到登录屏幕

有哪些可能的原因

我的routes/index.js文件如下所示:

var express = require('express');
var router = express.Router();

var isAuthenticated = function (req, res, next) {
    // if user is authenticated in the session, call the next() to call the next request handler 
    // Passport adds this method to request object. A middleware is allowed to add properties to
    // request and response objects
    if (req.isAuthenticated())
        return next();
    // if the user is not authenticated then redirect him to the login page
    res.redirect('/');
}

module.exports = function(passport){

    /* GET login page. */
    router.get('/', function(req, res) {
        // Display the Login page with any flash message, if any
        res.render('index', { message: req.flash('message') });
    });

    /* Handle Login POST */
    router.post('/login', passport.authenticate('login', {
        successRedirect: '/home',
        failureRedirect: '/',
        failureFlash : true  
    }));

    /* GET Registration Page */
    router.get('/signup', function(req, res){
        res.render('register',{message: req.flash('message')});
    });

    /* Handle Registration POST */
    router.post('/signup', passport.authenticate('signup', {
        successRedirect: '/home',
        failureRedirect: '/signup',
        failureFlash : true  
    }));

    /* GET Home Page */
    router.get('/home', isAuthenticated, function(req, res){
        res.render('home', { user: req.user });
    });

    /* Handle Logout */
    router.get('/signout', function(req, res) {
        req.logout();
        res.redirect('/');
    });

    return router;
}
我还在另一个文件中指定了一些AngularJS路由(在我开始添加身份验证之前,应用程序可以很好地使用这些路由)

我有什么遗漏吗

另外,我注意到目前我主页的URL是

而以前是


我添加了“home”以区别于“/”这是身份验证页面;但是,我不确定第一句话中的“#”是如何固定在路径上的。

我能够解决这个问题,如下所示。我更改了快速路线以包含

“登录”

路线,并将主路线更改为

“/”

结果,回家的路变成了

散列符号由和加在角点上。根据我的理解,角度将此类路径视为“/”。然后,剩下的路由由Angular完成,我有一个单页AngularJS应用程序

工作代码: 快车

工作代码:角度

app.config(['$routeProvider', function($routeProvider){
    $routeProvider

        .when('/', {
            templateUrl: 'partials/home.html',
            controller: 'HomeCtrl'
        })

        .when('/calendar',{
            templateUrl: 'partials/calendar.html',
            //controller: 'Calendar'
        })

        .when('/add-activity', {

            templateUrl: 'partials/activity-form.html',
            controller: 'AddActivityCtrl'
        })

        .when('/activity/:id',{
            templateUrl: 'partials/activity-form.html',
            controller: 'EditActivityCtrl'
        })

        .when('/activity/delete/:id', {
            templateUrl: 'partials/activity-delete.html',
            controller: 'DeleteActivityCtrl'
        })

        .otherwise({
            redirectTo: '/'
        });
}]);

我将在
module.exports=function(passport){
下移动
var isAuthenticated
,因为我不确定该上下文中是否存在passport。如果没有帮助,请开始注释
res.redirect('/'))
重定向到:“/”
以了解原因。@更快,只是为了确保我理解正确,我应该如何注释重定向?只是为了了解哪一个有效。这段代码似乎在登录时执行重定向:/*Handle login POST*/router.POST('/login',passport.authenticate('login',{successRedirect:'/home',failureRedirect:'/',failureFlash:true}));
var express = require('express');
var router = express.Router();

module.exports = function(passport){

    var isAuthenticated = function (req, res, next) {
            // if user is authenticated in the session, call the next() to call the next request handler 
            // Passport adds this method to request object. A middleware is allowed to add properties to
            // request and response objects
            if (req.isAuthenticated()){
                //console.log(next());
                return next();
            }
            // if the user is not authenticated then redirect him to the login page
            res.redirect('/login');
    }


    /* GET login page. */
    router.get('/login', function(req, res) {
        // Display the Login page with any flash message, if any
        res.render('login', { message: req.flash('message') });
    });

    /* Handle Login POST */
    router.post('/login', passport.authenticate('login', {
        successRedirect: '/',
        failureRedirect: '/login',
        failureFlash : true  
    }));

    /* GET Registration Page */
    router.get('/signup', function(req, res){
        res.render('register',{message: req.flash('message')});
    });

    /* Handle Registration POST */
    router.post('/signup', passport.authenticate('signup', {
        successRedirect: '/',
        failureRedirect: '/signup',
        failureFlash : true  
    }));

    /* GET Home Page when logged in */
    router.get('/', isAuthenticated, function(req, res){
        res.render('index', { user: req.user });
    });

    /* GET Home Page */
    router.get('/', isAuthenticated, function(req, res){
        res.render('index', { user: req.user });
    });

    /* Handle Logout */
    router.get('/signout', function(req, res) {
        req.logout();
        res.redirect('/login');
    });

    return router;
}
app.config(['$routeProvider', function($routeProvider){
    $routeProvider

        .when('/', {
            templateUrl: 'partials/home.html',
            controller: 'HomeCtrl'
        })

        .when('/calendar',{
            templateUrl: 'partials/calendar.html',
            //controller: 'Calendar'
        })

        .when('/add-activity', {

            templateUrl: 'partials/activity-form.html',
            controller: 'AddActivityCtrl'
        })

        .when('/activity/:id',{
            templateUrl: 'partials/activity-form.html',
            controller: 'EditActivityCtrl'
        })

        .when('/activity/delete/:id', {
            templateUrl: 'partials/activity-delete.html',
            controller: 'DeleteActivityCtrl'
        })

        .otherwise({
            redirectTo: '/'
        });
}]);