簡體   English   中英

Passport.js 執行

[英]Passport.js Execution

我一直在網上查看一些passport.js教程,但還沒有清楚地了解正在發生的事情。 有人可以幫我清除下面的疑問嗎? 請先閱讀底部的段落。

所以假設我正確設置了一切,這是登錄策略:

passport.use('login', new LocalStrategy({
    passReqToCallback : true
  },
  function(req, username, password, done) { 
    // check in mongo if a user with username exists or not
    User.findOne({ 'username' :  username }, 
      function(err, user) {
        // In case of any error, return using the done method
        if (err)
          return done(err);
        // Username does not exist, log error & redirect back
        if (!user){
          console.log('User Not Found with username '+username);
          return done(null, false, 
                req.flash('message', 'User Not found.'));                 
        }
        // User exists but wrong password, log the error 
        if (!isValidPassword(user, password)){
          console.log('Invalid Password');
          return done(null, false, 
              req.flash('message', 'Invalid Password'));
        }
        // User and password both match, return user from 
        // done method which will be treated like success
        return done(null, user);
      }
    );
}));

現在在我的 app.js(服務器)中,我將它作為我的路線之一:

/* Handle Login POST */
  router.post('/login', passport.authenticate('login', {
    successRedirect: '/home',
    failureRedirect: '/',
    failureFlash : true 
  }));

現在在我的 AJS 文件中:

app.controller('loginController', function($scope) {
    var user = $resource('/login');

    $scope.createUser = function() {
        var User = new user();
        User.username = $scope.usernameVar;
        User.password = $scope.passwordVar;
        User.save();
    }
});

請先閱讀此內容(而不是先閱讀代碼):

因此,當用戶單擊登錄頁面上的登錄按鈕時,會運行上面的createUser函數(在我的 AJS 文件中)。 然后我為端點'/login'創建一個資源對象,當我調用 save 時,它​​將在我的服務器(app.js)上運行該'/login'端點的路由。 然后在我的服務器中,它將passport.authenticate('login', ...它將運行passport 中間件。

現在我的問題是:

passport.use('login'...策略中,變量req, username, and password的do 值來自該策略的回調中。我是否必須明確傳遞用戶在我前端的文本字段。就像我在 AJS 視圖中對這兩個文本字段進行雙向數據綁定一樣。如果是這樣,我該如何傳遞這些用戶名和密碼值?

在我的 AJS 控制器中執行這兩行User.username = $scope.usernameVar; User.password = $scope.passwordVar; 將 usernameVar 和 passwordVar 值附加到我服務器req'/login'req對象?

如果您有一個帶有操作的表單可以發布到您的路徑/login ,並且在您的usernamepassword之后標記了輸入名稱,則提交按鈕會將值傳遞給您的護照代碼。

查看文檔中的表單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM