2016-11-19 340 views
0

我在尝试this basic login。注册工作正常,但当我登录http://localhost:1337/login(当我在登录表单中输入值并提交时,它显示以下错误(URL不变):为什么显示res.login不是函数?

TypeError:res.login不是函数

我试着在网上搜索,但没有找到任何解决方案是否有任何语法错误或我使用旧技术

这里是必要的代码:?

module.exports = { 
    login: function (req, res) { 
    return res.login({ 
     email: req.param('email'), 
     password: req.param('password'), 
     successRedirect: '/', 
     invalidRedirect: '/login' 
    }); 
    }, 
    logout: function (req, res) { 
    req.session.me = null; 
    if (req.wantsJSON) { 
     return res.ok('Logged out successfully!'); 
    } 
    return res.redirect('/'); 
    }, 

    signup: function (req, res) { 
    User.signup({ 
     name: req.param('name'), 
     email: req.param('email'), 
     password: req.param('password') 
    }, function(err, user){ 
     if (err) return res.negotiate(err); 
     req.session.me = user.id; 
     return res.redirect('/welcome'); 
    }); 
    } 
}; 

型号:user.js的

module.exports = { 

    attributes: { 
    email: { 
     type: 'email', 
     required: true 
    }, 
    password: { 
     type: 'string', 
     required: true 
    } 
    }, 

    signup : function(inputs, cb){ 
    User.create({ 
     name: inputs.name, 
     email: inputs.email, 
     password: inputs.password 
    }).exec(cb); 
    }, 

    attemptLogin: function(inputs, cb) { 
    User.findOne({ 
     email: inputs.email, 
     password: inputs.password 
    }).exec(cb); 
    } 

}; 

login.ejs

<h1>Login</h1> 
<form action="/login" method="post"> 

    <label for="email">Your email address?</label> 
    <input name="email" type="text"/> 
    <br/> 

    <label for="password">Your safe word?</label> 
    <input name="password" type="password"/> 
    <br/> 
    <input type="submit"/> 
</form> 

routes.js

'/': { 
    view: 'homepage' 
    }, 
    'get /login' : {view : 'user/login'}, 
    'get /signup' : {view : 'user/signup'}, 
    'get /welcome' : {view: 'user/welcome'}, 
    'post /login' : 'UserController.login', 
    'post /signup' : 'UserController.signup', 
    '/logout' : 'UserController.logout' 
+0

你的代码是什么? –

+0

和网站上写的一样。 –

+0

在什么行和文件中引发错误? –

回答

0

我不认为res.login是你是一个函数在登录操作中使用。我对你的UserController.js文件做了一些改变,现在它为我工作。

UserController.js

即成通过登录操作经过身份验证和未通过认证的看法。使用会话变量来跟踪会话是否已经被认证。我在这里使用user.name,你可以使用任何其他属性,如id。

login: function (req, res) { 
    if (req.method === 'GET' && !req.session.name) { 
     res.view('user/login'); 
    } 
    else if (req.session.name) { 
     res.view('user/welcome', { username: req.session.name }); 
    } else { 
     User.findOne({ email: req.param('email'), password: req.param('password')}) 
      .exec(function (err, user) { 
       if (err) res.send(err); 
       if (!user) res.send("User Not Found"); 
       else { 
        req.session.name = user.name; 
        res.view('user/welcome', { username: user.name }); 
       } 
      }); 
    } 
}, 

user.js的 我添加的属性名用户模型。这是在表格中,但没有在模型文件中。

attributes: { 
    name: { 
     type: 'string', 
     required: true 
    }, 
}, 

routes.js

服务POST和GET从相同的控制器/行动的请求。

// 'get /login': { view: 'user/login' }, 
'/login': 'UserController.login', 

尝试围绕这些行,你应该能够得到它的工作。让我知道这是否有帮助。

+0

它将每个电子邮件和任何密码登录。所以这实际上并不奏效。这只是重定向而不匹配字段。 –

+0

当我尝试使用随机电子邮件/密码时,它为我提供'用户未找到'错误。不知道它是如何为你工作的。 – Ranjan

相关问题