首頁 > web前端 > js教程 > 使用Passport與semelize和MySQL

使用Passport與semelize和MySQL

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-03-11 11:04:09
原創
755 人瀏覽過

續集是一個基於承諾的node.js orm。它可以與PostgreSQL,MySQL,Mariadb,Sqlite和MSSQL一起使用。在本教程中,我們將為Web應用程序的用戶實施身份驗證。我們將使用Passport,即續集和MySQL的流行身份驗證中間件,以實現用戶註冊和登錄。

入門

請確保您在計算機上安裝了以下內容:

        • 因此,我們繼續開始安裝所需的內容。

          1。生成 package.json 文件

          為您的應用創建目錄。在此目錄中,從您的終端或命令提示符運行此操作:

           npm init <br> 
          登入後複製

          這會初始化NPM依賴項管理器。這將提供一系列提示。

          • 鍵入您的應用程序名稱,而沒有空格的名稱 name
          • enter 使用默認使用
        • >。
        • 您可以按輸入接受其餘提示的默認值。

        2。安裝依賴項

        本教程的主要依賴性是:

        • express
        • 續集
        • mysql
        • passport
        • 在您的終端或命令提示中,安裝它們JS - SAVE
          NPM安裝exprance handlebars -save
          npm安裝mysql2 -save-save

          如果您在此項目中使用git,請創建Express 。然後,我們初始化express,然後將其分配給變量護照模塊和Passport and Models。運行此操作以查看是否一切都很好:

           node server.js <br> 
          登入後複製

          如果您收到消息“ 網站是現場的要做的就是創建用戶模型,這基本上是用戶表。這將包含基本的用戶信息。

          在我們的模型文件夾中,我們創建一個文件並將其命名 user.js 。該文件的完整路徑應為 app/models/user.js

          打開 user.js 文件,並添加以下代碼:

           <pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <pre class="brush:php;toolbar:false"> <br> > primarykey:true,<br>類型:sequelize.integer <br>},<br> firstName:{<br>類型:sequelize.string,<br> notempty:true <br> :{<br>類型:sequelize.text <br>},<br>電子郵件:{<br>類型:sequelize.string,<br> validate:{<br> isemail:true <br>} <br>} <br>},<br>密碼:{<br> },<br>狀態:{<br>類型:sequelize.enum('active','intactive'),<br> defaultValue:'active'active'<br>} <br>}); <br>返回用戶; <br>} <br>} <br>} <br> <br> <br> <b>現在運行:</b>
          登入後複製
          pre> pre> netode nive nive niver.js

          pre>好的! 數據庫 看起來不錯要做的事情是導入authcontroller 文件並定義註冊路由。
           var authcontroller = require('../ controllers/authcontroller.js'); <br>模塊= function = function(app) server.js 
          登入後複製
          並將應用程序作為參數傳遞。 Localhost:5000/Indip,您將看到註冊表格。 使用Passport與semelize和MySQL signin.hbs 的文件,並在其中粘貼以下HTML代碼:
          &lt;!樣式“ href =”/styles.css”&gt; <br>&lt;/head&gt; <br>標籤=“電子郵件”&gt;電子郵件地址&lt; /label&gt; <br>&lt; input class =“ text” name =“ emaim” type =“ text” /&gt; <br>&lt; label for =“ passwort” =“提交”值=“登錄”/&gt; <br>&lt;/form&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; <br> 
          登入後複製

          然後,在 app/appycontrolller.js ,res){
          res.render('signin');
          };

          然後,在 app/app/auth.js 中,我們添加了這樣的登錄路由: S =功能(Passport,用戶){
          }

          在此塊中,我們將localstrategy 以下初始化:

           <pre class="brush:php;toolbar:false"> pressport.use('local-signup',new localstrategy',new localstrategy(<br>返回<br>},<br>))<br> 
          登入後複製

          現在,我們已經聲明了什麼請求字段,我們的密碼field (PARSSPORT變量)是。

          最後一個變量用戶,我們檢查用戶是否已經存在,如果沒有,如果沒有,我們是否已添加(函數(用戶){
          如果(用戶)
          {
          返回完成(null,false,{
          消息:'該電子郵件已被授予'
          });
          } else
          } BR> lastName:req.body.lastName
          };
          user.create(data)。

          req.body 對象,其中包含我們的註冊表格中的輸入。

          您的路由 import Pradept> //加載PARSSPORT策略
          現在看起來像這樣:

           var express = requient('express'); <br> var app = express(); <br> var passport = require('Passport'); <br> var session = requiend('express-session') true <br>})<br>); <br> app.use(express.json()); <br> // for passport <br> app.use(session({<br> secret:'鍵盤cat',<br> resave',<br> resave:true,<br> saveuninitialialized:true <br> <br>}})); // Secret Secret <br> app.use(passport.Initialize()); <br> app.use(passport.session()); //持續的登錄儀<br> //用於車把<br> app.set('views','./app/views'); <br> app.Engine('hbs',exphbs.engine({<br> extname:.hbs'.hbs','.hbs',<br> defaultlay default layout:default defaultlay:fals,<br> layouttir:layouts/layouts/layouts/<br> bs'); <br> app.get('/',函數(req,res){<br> res.send('歡迎使用續集'); <br>}); <br> //模型<br> var模型= ('./app/config/passport/passport.js')(Passport,models.user); <br> //同步數據庫<br> sequest.seper.seque elize.sync()。然後(function(<br> console.log) }); <br> app.listen(5000,function(err){<br> if(!err)<br> console.log(“ site is as lim live”); <br> else console.log(err); err); <br>}); <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>我們是這樣做的: <p>首先,我們轉到<strong> app/auth.js </strong>,並為這樣的註冊添加了途徑。</p> <pre class="brush:php;toolbar:false"> app.post('/cignup',passport.authenticate',passport.authenticate('local-signup' br> 
          登入後複製

          由於我們需要護照,因此我們需要將其傳遞給此方法。我們可以在此腳本中導入護照,也可以從server.js傳遞。讓我們做後者。

          修改此文件中導出的函數 app/routes/auth.js 以護照作為參數。 App/autes/auth.js 中的代碼應在修改後看起來像這樣。

           var authcontroller = require = require('../ controllers/authcontroller.js'); <br> module.exports = function = function = function(app,passport) ignin); <br> app.post('/cignup',passport.authenticate('local-signup',{<br> SuccessRedirect:'/dashboard',<br> FailuRereredirect:'/cignup'/cignup'<br>} <br>} <br>); <br>}; <br>}; <br> <br> <br> <br>代碼的其他行。 <pre class="brush:php;toolbar:false">函數ISLOGGEDIN(req,res,sext){<br> if(req.isauthenticated())<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> ,isloggedin,authcontroller.dashboard); <br> 
          登入後複製

          現在,當您再次運行該應用程序並嘗試訪問儀表板頁面並且您未登錄時,您應該被重定向到登錄頁面。

          >

          whew!現在是時候實施最後一部分:登錄。

          首先,我們將在 app/confip/partport/passport/passport.js 中添加新的本地策略“電子郵件”,
          密碼字段:'密碼',
          passreqtocallback:true //允許我們將整個請求傳遞給回調
          },
          函數(req,email,email,email,password) ({
          其中:{
          電子郵件:電子郵件
          }
          })。不正確的密碼。'
          });
          }
          var userInfo = user.get();
          返回完成(null,userInfo);
          }) }
          ));

          在此策略中, iSvalidPassword 函數將輸入的密碼與BCRypt比較方法進行比較,因為我們將密碼存儲在BCRYPT 上。 如果詳細信息是正確的,我們的用戶將被簽署。

          現在,轉到路由/auth.js ,並將發布的途徑添加到/signin eRedirect:'/signin'
          }
          ));

          您的路由/auth.js 在完成時應該看起來像這樣。

           var> var authcontroller = requienter = requienter = requip('../註冊); <br> app.get('/signin',authcontroller.signin); <br> app.post('/cignup',passport.authenticate('local-signup',{<br> strucentredirect:'/dashboard','/dashboard',<br> failuREREDIRECT',<br> FAILURERECT: er.dashboard); <br> app.get('/logout',authcontroller.logout); <br> app.post('/signin',passport.authenticate('local-signin',{<br> successredect:'/dashredect:'/dashrect:'/dashboard',<br> failureReedirect:如果(req.isauthenticated())<br>返回next(); <br> res.redirect('/signin'); <br>} <br>} <br>} <br> <br> 
          登入後複製

          現在運行該應用程序並嘗試登錄p>恭喜,如果您到本教程的末尾!我們已經成功地使用了MySQL數據庫的續集和護照。

          為了使我們的應用程序更具吸引力,我們會添加一些CSS樣式。可以在GitHub上找到造型和本教程的完整代碼的代碼。

          結論

          這是我們關於使用Passport對使用semelize and MySQL的用戶進行身份驗證的教程的結論。續集是使用節點時處理mySQL的非常有用的ORM。我個人發現它非常有用,您絕對應該考慮在下一個Node-Mysql應用中使用它。

          此帖子已通過Mary Okosun的貢獻進行了更新。 Mary是位於尼日利亞拉各斯的軟件開發人員,在Node.js,JavaScript,MySQL和NOSQL Technologies中具有專業知識。

以上是使用Passport與semelize和MySQL的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板