简体   繁体   English

帆+护照+基本认证

[英]Sails + passport + Basic Authentication

in passport js, basic strategy, the following code sample provides a function for verifying the identity of a user. 在护照js(基本策略)中,以下代码示例提供了用于验证用户身份的功能。

passport.use(new BasicStrategy(
  function(userid, password, done) {
    User.findOne({ username: userid }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

Question is where (which file) in a Sails application should this code be placed? 问题是此代码应放在Sails应用程序的哪个文件中(哪个文件)? I suppose same applies for a custom verification function? 我想同样适用于自定义验证功能吗?

  1. create AuthController under controllers directory 在controllers目录下创建AuthController
  2. then write code to make passport handle login process 然后编写代码以使护照处理登录过程

     login: function(req, res) { passport.authenticate('local', function(err, user, info) { if ((err) || (!user)) { return res.send({ message: info.message, user: user }); } req.logIn(user, function(err) { if (err) res.send(err); return res.send({ message: info.message, user: user }); }); })(req, res); 
  3. this line passport.authenticate('local' will read configuration from passport.js inside config.js which will be like this :- 这行passport.authenticate('local'将从config.js内部的passport.js读取配置,如下所示:-

    passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' }, function(email, password, done) { Passport.use(new LocalStrategy({usernameField:'email',passwordField:'password'},function(email,password,done){

     User.findOne({ email: email }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect email.' }); } bcrypt.compare(password, user.password, function (err, res) { if (!res) return done(null, false, { message: 'Invalid Password' }); var returnUser = { email: user.email, createdAt: user.createdAt, id: user.id }; return done(null, returnUser, { message: 'Logged In Successfully' }); }); }); 
  4. add these line into route.js :- 'post /login': 'AuthController.login' 将这些行添加到route.js中:- 'post /login': 'AuthController.login'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM