續集是一個基於承諾的node.js orm。它可以與PostgreSQL,MySQL,Mariadb,Sqlite和MSSQL一起使用。在本教程中,我們將為Web應用程序的用戶實施身份驗證。我們將使用Passport,即續集和MySQL的流行身份驗證中間件,以實現用戶註冊和登錄。
請確保您在計算機上安裝了以下內容:
為您的應用創建目錄。在此目錄中,從您的終端或命令提示符運行此操作:
npm init <br>
這會初始化NPM依賴項管理器。這將提供一系列提示。
本教程的主要依賴性是:
如果您在此項目中使用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>
var authcontroller = require('../ controllers/authcontroller.js'); <br>模塊= function = function(app) server.js
&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中文網其他相關文章!