每個教程或未完成的文檔都沒有工作。這就是爲什麼我在這裏問:有沒有一個簡單的教程,這對於護照和風帆真的起作用?有沒有將passport.js集成到sails.js的文檔或教程?
0
A
回答
2
按照此步驟兩整合護照帆JS 第一: - 列表裏面application_directory /的package.json這些依賴關係下的依賴 //application_directory/package.json
{
...
"dependencies": {
...
"passport": "~0.1.16",
"passport-local": "~0.1.6",
"bcrypt": "~0.7.6"
}
...
}
2- 要創建用戶模型運行以下命令:
sails generate model user
3 model user.js will如下所示
var bcrypt = require('bcrypt');
module.exports = {
attributes: {
username: {
type: 'string',
required: true,
unique: true
},
password: {
type: 'string',
required: true
},
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
},
beforeCreate: function(user, cb) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) {
console.log(err);
cb(err);
}else{
user.password = hash;
cb(null, user);
}
});
});
}
};
- 要創建的控制器在帆鍵入命令
sails generate controller
AuthController將如下所示:
var passport = require('passport');
module.exports = {
login: function (req, res) {
res.view();
},
process: function(req, res){
passport.authenticate('local', function(err, user, info) {
if ((err) || (!user)) {
return res.send({
message: 'login failed'
});
res.send(err);
}
req.logIn(user, function(err) {
if (err) res.send(err);
return res.send({
message: 'login successful'
});
});
})(req, res);
},
logout: function (req,res){
req.logout();
res.send('logout successful');
}
};
module.exports.blueprints = {
actions: true,
rest: true,
shortcuts: true
};
- 添加以下代碼到application_directory/config/routes.js
module.exports.routes = {
// (This would also work if you had a file at: `/views/home.ejs`)
'/': {
view: 'home/index'
},
'/login': {
controller: 'AuthController',
action: 'login'
},
'/logout': {
controller: 'AuthController',
action: 'logout'
}
......
}
- 裏面application_directory/config中創建一個文件passport.js和下面的代碼添加到
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy;
module.exports = {
express: {
customMiddleware: function(app){
console.log('Express midleware for passport');
app.use(passport.initialize());
app.use(passport.session());
}
}
};
- 內/ API /服務/創建一個文件passport.js和下面的代碼添加到
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
bcrypt = require('bcrypt'); < /code>
//helper functions
function findById(id, fn) {
User.findOne(id).done(function (err, user) {
if (err) {
return fn(null, null);
} else {
return fn(null, user);
}
});
}
function findByUsername(u, fn) {
User.findOne({
username: u
}).done(function (err, user) {
// Error handling
if (err) {
return fn(null, null);
// The User was found successfully!
} else {
return fn(null, user);
}
});
}
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
findById(id, function (err, user) {
done(err, user);
});
});
passport.use(new LocalStrategy(
function (username, password, done) {
// asynchronous verification, for effect...
process.nextTick(function() {
findByUsername(username, function (err, user) {
if (err)
return done(null, err);
if (!user) {
return done(null, false, {
message: 'Unknown user ' + username
});
}
bcrypt.compare(password, user.password, function (err, res) {
if (!res)
return done(null, false, {
message: 'Invalid Password'
});
var returnUser = {
username: user.username,
createdAt: user.createdAt,
id: user.id
};
return done(null, returnUser, {
message: 'Logged In Successfully'
});
});
})
});
}
));
- 修改authenticat ed.js文件目前內部/ API /政策/
/**
* Allow any authenticated user.
*/
module.exports = function (req, res, ok) {
// User is allowed, proceed to controller
var is_auth = req.isAuthenticated()
if (is_auth) return next();
// User is not allowed
else return res.redirect("/login");
};
相關問題
- 1. 是否有Asterisk.NET的教程或文檔?
- 2. 「acts_as_ferret」的文檔或教程
- 3. dgeni文檔生成集沒有定義
- 4. xUnit.NET有沒有好的文檔/書籍/教程?
- 5. Elasticsearch文檔沒有顯示或沒有路由集更新
- 6. 在ClojureCLR上是否有任何體面的文檔或教程?
- 7. jsdocs3沒有文檔生成
- 8. Google checkout集成 - 沒有在文檔/指南/谷歌上找到
- 9. sails.js + passport.js:管理會話
- 10. 任何人都知道我可以通過.net獲得有關VSS 2005集成的文檔或教程.net
- 11. 在哪裏可以找到有關ASP.NET MVC2的文檔/教程?
- 12. 沒有jQuery的Three.js教程?
- 13. 將Sphinx生成的乳膠代碼集成到現有的Latex文檔中
- 14. 沒有Passport.js谷歌+認證
- 15. 生成的壓縮過程似乎沒有將文件添加到存檔
- 16. 將SharePoint文檔庫集成到ASP.NET中
- 17. Rails教程3.3.4 - 「mv:foobar:沒有這樣的文件或目錄」
- 18. 集成角2 Sails.js
- 19. URI教程/文檔
- 20. Pechkin文檔/教程
- 21. Cassandra幻影教程:有沒有使用Phantom的基本教程?
- 22. 有沒有MySQLOData的文檔?
- 23. 有沒有jquery.couch.js的文檔?
- 24. 有沒有軟電話/ voip的任何源代碼或教程
- 25. 有沒有關於epoll UDP的好例子或教程?
- 26. 有沒有教程或cubism.js + WebSocket的例子?
- 27. 有沒有用Magma編寫代碼的好教程或參考?
- 28. 有沒有將WebSVN RSS集成到eclipse中的方法
- 29. 有沒有將R集成到ruby中的庫?
- 30. 有沒有可以將IntelliJ IDEA集成到mercurial的插件?
http://iliketomatoes.com/implement-passport-js-authentication-with-sails-js-0-10-2/ 這是很好的教程! – vkstack
也許你需要閱讀參考文檔並自己編寫代碼,而不是尋找「教程」 –
也許...但也許文檔沒有完成或不起作用。你試過了嗎?它真的有用嗎?發佈網址,我會閱讀並嘗試 - 當某些事情不起作用時,我會問你。謝謝。 – Suisse