すべてのチュートリアルや未完成のドキュメントはありません。これが私がここで尋ねる理由です:簡単なチュートリアルはありますか?パスポートとセイルのために本当に効果がありますか?passport.jsをsails.jsに統合するためのドキュメントまたはチュートリアルはありますか?
0
A
答えて
2
これは、2つの帆のJS 最初とパスポートを統合手順に従って: - 依存関係 //application_directory/package.json
{
...
"dependencies": {
...
"passport": "~0.1.16",
"passport-local": "~0.1.6",
"bcrypt": "~0.7.6"
}
...
}
2- 下application_directory/package.json内部 一覧これらの依存関係をユーザーモデルを作成するには、次のコマンドを実行します。
sails generate model user
3-モデル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. SmartGWTとJasperReportsを統合するチュートリアルはありますか?
- 2. PHP統合のためのALIPAY APIはありますか?
- 3. BlueSnap Apple Pay統合ドキュメントはどこにありますか?
- 4. Hibernatemockのドキュメントまたはチュートリアル?
- 5. これを行うためのチュートリアル/ガイドはありますか?
- 6. Jythonをデバッグするための統合Eclipseプラグインはありますか?
- 7. JSに統合またはデリバティブを実行するためのネイティブ関数はありますか?
- 8. iPhoneアプリをデータベースにリンクするためのチュートリアルはありますか?
- 9. FreeswitchとSugarCRMの統合のためのモジュールはありますか?
- 10. 統合テストのための良いredmineプラグインはありますか?
- 11. Ruby(Rails以外)でOAuthプロバイダを作成するためのチュートリアルまたはドキュメント
- 12. CPPUnitとVS2008またはEclipse CDTを統合するプラグインはありますか?
- 13. CouchDbとSolrを統合したプロジェクトはありますか?
- 14. GAE(Java)でテンプレートフレームワークを設定するためのチュートリアルはありますか?
- 15. cakephpとuploadifyを使用するためのチュートリアルはありますか?
- 16. Linuxでhbase + tomcatを設定するためのチュートリアルはありますか?
- 17. ShareKitを使用するための良いチュートリアルはありますか?
- 18. phonegap-LimeJSのコード例またはチュートリアルはありますか?
- 19. PouchDBにはドキュメントを取得するためのhttpインターセプタがありますか
- 20. Sails.jsのpassport.js実装でエラーが発生しました
- 21. OpenCVのコンパイルタスクを避けるために、OpenCVライブラリを統合したRasPiイメージはありますか?
- 22. sails.js + passport.js:セッションを管理する
- 23. Xcode 4プラグインを構築するためのドキュメントはありますか?
- 24. iPhoneでMDMを統合するためのドキュメント
- 25. WPFアプリケーションで統合されたヘルプシステムに適したソリューションはありますか?
- 26. passport.jsとMeteorの統合
- 27. PDFおよび/またはlibharuのドキュメントはありますか?
- 28. vBulletinをPHPに統合する方法はありますか?
- 29. Spring統合アグリゲータまたはルータに正しいパターンがありますか?
- 30. sails.jsのpassport.js実装でInternalOAuthErrorの原因は何ですか?
http://iliketomatoes.com/implement-passport-js-authentication-with-sails-js-0-10-2/ これは素晴らしいチュートリアルです!!! – vkstack
参考資料を読んでコードを書く必要があるかもしれませんし、 "チュートリアル" –
かもしれませんが、ドキュメントが完成していないか、動作しない可能性があります。あなたはそれを試しましたか?それは本当に効果がありましたか? URLを投稿して、それを読んで試してみてください。何かがうまくいかないときは、私はあなたに尋ねます。ありがとうございました。 – Suisse