0


node.jsexpress、およびeveryauth で実行される Web 認証システムに取り組んでいます。コードのすべての部分はhereからコピーアンドペーストされましたが、パスワード認証に失敗しました-フォームデータをPOSTしようとしたときに例外が発生しました。ノード コンソールの例外は次のとおりです。

TypeError: Cannot read property 'login' of undefined
at Object.module.exports.everyModule.submodule.configurable.loginFormFieldName.passwordFormFieldName.loginHumanName.loginKey.get.step.accepts.promises.displayLogin.post.step.accepts.promises.step.accepts.promises.step.description.accepts.promises.step.description.accepts.promises.step.description.accepts.promises.step.description.accepts.promises.step.description.accepts.promises.extractLoginPassword.interpretUserOrErrors.getSession.addToSession.sess.auth.sess.auth [as _extractLoginPassword] (D:\xampp\htdocs\KO_\node_modules\everyauth\lib\modules\password.js:188:21)
at Object.Step.exec (D:\xampp\htdocs\KO_\node_modules\everyauth\lib\step.js:47:21)
at RouteTriggeredSequence.StepSequence.start (D:\xampp\htdocs\KO_\node_modules\everyauth\lib\stepSequence.js:46:39)
at RouteTriggeredSequence.routeHandler (D:\xampp\htdocs\KO_\node_modules\everyauth\lib\routeTriggeredSequence.js:13:13)
at nextMiddleware (D:\xampp\htdocs\KO_\node_modules\everyauth\node_modules\connect\lib\middleware\router.js:175:25)
at param (D:\xampp\htdocs\KO_\node_modules\everyauth\node_modules\connect\lib\middleware\router.js:183:17)
at pass (D:\xampp\htdocs\KO_\node_modules\everyauth\node_modules\connect\lib\middleware\router.js:191:11)
at Object.router (D:\xampp\htdocs\KO_\node_modules\everyauth\node_modules\connect\lib\middleware\router.js:197:7)
at next (D:\xampp\htdocs\KO_\node_modules\everyauth\node_modules\connect\lib\http.js:204:15)
at Object.fetchUserFromSession [as handle] (D:\xampp\htdocs\KO_\node_modules\everyauth\index.js:33:43)

私のコードスニペット:

everyauth.password
.loginWith('login')
.getLoginPath('/login')
.postLoginPath('/login')
.loginView('loginForm.jade')
.authenticate( function (login, password) {
  console.log("login + password");
  var errors = [];
  if (!login) errors.push('Missing login');
  if (!password) errors.push('Missing password');
  if (errors.length) return errors;
  var user = usersByLogin[login];
  if (!user) return ['Login failed'];
  if (user.password !== password) return ['Login failed'];
  return user;
})

.getRegisterPath('/register')
.postRegisterPath('/register')
.registerView('register.jade')
.validateRegistration( function (newUserAttrs, errors) {
  var login = newUserAttrs.login;
  if (usersByLogin[login]) errors.push('Login already taken');
  return errors;
})
.registerUser( function (newUserAttrs) {
  var login = newUserAttrs[this.loginKey()];
  return usersByLogin[login] = addUser(newUserAttrs);
})

.loginSuccessRedirect('/')
.registerSuccessRedirect('/');

何か案は?

4

1 に答える 1

0

この行のせいではありません: var login = newUserAttrs.login;?

于 2012-07-09T21:42:07.083 に答える