eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.89k stars 1.82k forks source link

无法使用 egg-passport-local 进行鉴权 #2355

Closed JZLeung closed 6 years ago

JZLeung commented 6 years ago

使用了 egg-passport-local 的插件,在 app.js 中配置了相应的设置,但是却无法进入 passport 的 use verify 函数,因而无法进行相关操作。

thonatos commented 6 years ago

先看看示例: egg-cnode

JZLeung commented 6 years ago

@thonatos 看了,还是不行,我另一个 demo,一模一样的代码,却可以。

thonatos commented 6 years ago

@JZLeung

这样的话,建议你先检查代码,发现问题的过程也是学习过程,💪

JZLeung commented 6 years ago

终于找到原因了:插件默认的表单提交的字段是 namepass, 如果实际项目中并非这俩字段的话,需要在 app.js 中自行配置:

app.passport.use(new LocalStrategy({
    // 配置你的表单字段
    usernameField: 'loginname',
    passwordField: 'password',
    passReqToCallback: true,
  }, (req, username, password, done) => {
    // format user
    const user = {
      provider: 'local',
      username,
      password,
    };
    console.log('%s %s get user: %j', req.method, req.url, user);
    app.passport.doVerify(req, user, done);
  }));

或者在 config.js 中配置:

module.exports = appInfo => {
  config.passportLocal = {
    usernameField: 'name',
    passwordField: 'pass',
  };
};
atian25 commented 6 years ago

https://github.com/eggjs/egg-passport-local#configuration

文档有写的

ghostcode commented 6 years ago

使用了 egg-passport-local 的插件,在 app.js 中配置了相应的设置,但是却无法进入 passport 的 use verify 函数,因而无法进行相关操作。

egg-passport-local 和 passport-local 都需要安装吗?