类型错误:无法读取未定义的属性“已验证”

问题描述

我目前遇到了这个问题,因为我不确定这里的问题是什么。要么我的大脑不工作,因为我现在已经在这个项目上工作了 5 多个小时,当我尝试运行它时,它显示了这个错误

 TypeError: Cannot read property 'authenticated' of undefined
    at module.exports (my directory\api\policies\userInfo.js:6:21)

我不确定我应该在这里分享哪一部分,但这里是主要内容。

userInfo.js

/*jslint node: true,unparam: true,nomen: true*/
/*global User*/
"use strict";

module.exports = function (req,res,next){
    if (req.session.authenticated && req.session.userid && req.session.userid > 0) {
        User.findOne({
            id: req.session.userid
        },function (err,user) {
            res.locals.__user = user;
            next();
        });
    } else {
        next();
    }
};

authController

/*jslint node: true,unparam: true*/
/*global User,LogService*/
"use strict";

module.exports = {
    login: function (req,res) {
        var username = req.param('username'),password = req.param('password');

        User.findOne({
            Name: username
        },user) {
            if (err || !user) {
                LogService.login(req.ip,'hat versucht sich als ' + username + ' anzumelden. Der Benutzername existiert nicht.');
                res.view('auth/message',{
                    active: 'login',title: 'Live Your Dream - Anmelden',error: 'Der angegebene Benutzername existiert nicht.',});
            } else {
                if (user.validPassword(password)) {
                    req.session.authenticated = true;
                    req.session.userid = user.id;
                    LogService.login(req.ip,'hat sich erfolgreich als ' + username + ' angemeldet.');
                    //res.redirect('/login/success');
                    res.redirect('/user/' + username);
                } else {
                    LogService.login(req.ip,'hat versucht sich als ' + username + ' anzumelden. Das passwort war falsch.');
                    req.session.loginAttempts = (req.session.loginAttempts || 0) + 1;
                    if (req.session.loginAttempts >= 3) {
                        req.session.restrictLogin = new Date().getTime() + (20 * 60 * 1000); //20 Minuten in Millisekunden
                    }
                    res.view('auth/message',{
                        active: 'login',error: 'Das angegebene Passwort ist falsch.',});
                }
            }
        });
    },successLogin: function (req,res) {
        res.view('auth/message',{
            active: 'login',success: 'Du wurdest erfolgreich angemeldet.'
        });
    },logout: function (req,res) {
        if (req.session.authenticated) {
            req.session.authenticated = false;
            delete req.session.authenticated;
            delete req.session.userid;
            res.redirect('/logout/success');
        } else {
            res.view('auth/message',{
                active: 'login',title: 'Live Your Dream - Abmelden',error: 'Du bist nicht angemeldet.'
            });
        }
    },succesLogout: function (req,success: 'Du wurdest erfolgreich abgemeldet.'
        });
    },view: function (req,res) {
        if (req.session.restrictLogin && req.session.restrictLogin > new Date().getTime()) {
            res.view('auth/restricted',title: 'Live Your Dream - Anmelden'
            });
        } else {
            if (req.session.restrictLogin) {
                delete req.session.restrictLogin;
                delete req.session.loginAttempts;
            }
            res.view('auth/login',title: 'Live Your Dream - Anmelden'
            });
        }
    },};

解决方法

您必须使用具有未初始化会话的 req 调用此 userInfo.js。解决这个问题的一种方法是处理 req.session 未定义的情况。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...