我要去嘗試和你的問題分解成幾個部分:
首先有一點誤解。護照不會捆綁在令牌生成系統中。 Passport旨在配置您必須包含的依賴關係的策略。這樣做可以讓Passport本身輕而易舉。當您需要本地(用戶名和密碼)身份驗證策略時,我可能需要使用Twitter進行身份驗證。所以,護照既不包含。我安裝我需要的東西,並保持包裝尺寸較小。
TL; DR:沒有辦法不安裝Passport的插件。您需要包含某種策略。
我打算假設你想使用本地策略。所以,你需要護照本地。別擔心,它是由Passport作者Jared Hanson撰寫的。
我使用的大部分內容都來自Passport文檔,具體爲here。
讓我們看一下配置:
- 安裝護照和護照本地模塊。
- 確保Express,MongoDB,Node,npm等是最新的。
護照,當地看起來基本的配置文件是這樣的:
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username), function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
現在你需要放置一個形式的網頁上。這裏是一個非常簡單的例子:
<form action="/login" method="post">
<div>
<label>Username:</label>
<input type="text" name="username" />
</div>
<div>
<label>Password:</label>
<input type="password" name="password" />
</div>
<div>
<input type="submit" value="Log In" />
</div>
</form>
接下來,你需要在你的應用程序快捷的路線。請參閱Express Routing Documentation瞭解更多信息。在參數
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' })
);
注意:默認情況下,LocalStrategy預計憑據是在一個名爲用戶名和密碼參數。有其他配置選項可以命名它們,例如使用電子郵件而不是用戶名登錄。
爲什麼你不想使用庫來生成令牌? –