2016-11-19 2 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

Смежные вопросы