Articles of passport.js

阻止访问AngularJS中的pipe理页面

我想知道AngularJS中最好的方法是保护pipe理页面,即普通用户不应该看到的页面。 显然,会有后端authentication,但由于AngularJS应用程序是客户端,人们仍然可以从理论上看路由,直接转到这些URL并查看pipe理页面。 我使用Express,PassportJS和MongoDB(Mongoose)作为我的后端。 自然,他们将无法与pipe理页面进行交互,因为在创build,删除服务器端身份validation,但我宁愿甚至不提供页面给用户,如果他们没有适当的访问。 由于该应用程序是完全客户端JS,但我认为这是不可能的,因为人们可以修改路由和其他东西。 最好的办法是什么呢? 感谢您的任何意见!

无论如何设置passportjs的代理设置?

目前,我正在使用基于expressjs和使用passportjs( http://passportjs.org/ )进行yammer身份validation的sails框架。 在公司代理后面的服务器上部署节点应用程序时遇到问题。 无法连接到yammer进行OAuth2身份validation。 错误如下: 错误:无法获取访问令牌(错误:连接ETIMEDOUT) at /root/rlps/node_modules/passport-yammer/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:125:38 在/root/rlps/node_modules/passport-yammer/lib/passport-yammer/strategy.js:72:20 在ClientRequest。 (/root/rlps/node_modules/passport-yammer/node_modules/passport-oauth/node_modules/oauth/lib/oauth2.js:129:5) 在ClientRequest.EventEmitter.emit(events.js:95:17) 在CleartextStream.socketErrorListener(http.js:1547:9) 在CleartextStream.EventEmitter.emit(events.js:95:17) 在Socket.onerror(tls.js:1437:17) 在Socket.EventEmitter.emit(events.js:117:20) 在net.js:441:14 在process._tickDomainCallback(node.js:459:13) 我相信这是因为代理阻塞了路。 我试图设置一切环境值(如http_proxy和https_proxy),但似乎代码不承认他们,需要在passportjs中的某处configuration它。 那么,在passportjs中设置代理设置或在nodejs中解决这个代理问题的任何好方法?

有或没有令牌JWT + PASSPORT的路线可用

我希望我可以使用或不使用令牌来访问路由器。 如果用户有一个令牌,比给我req.user 喜欢这个: router.get('/profile', function(req, res) { if(req.user) { // or if (req.isAuthenticated()) res.send('logged') } else { res.send('not loggedIn') } }); 我的应用: var JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; var opts = {} opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); opts.secretOrKey = 'sh'; passport.use(new JwtStrategy(opts, function(jwt_payload, done) { User.findOne({id: jwt_payload.sub}, function(err, user) { if (err) { return done(err, false); […]

护照:不同的redirectlogin和帐户注册

我正在使用护照模块(github身份validation)在我的应用程序,我想根据行动redirect…我检查是否只是一个正常的login或如果用户第一次login。 passport.use(new GitHubStrategy({ clientID: conf.github.app_id, clientSecret: conf.github.app_secret, callbackURL: conf.github.callback_url }, function(accessToken, refreshToken, profile, done) { // asynchronous verification, for effect… process.nextTick(function () { // To keep the example simple, the user's GitHub profile is returned to // represent the logged-in user. In a typical application, you would want // to associate the GitHub account with […]

在NodeJS中重置密码

我做了一个设置,使用NodeJS /护照更新用户的密码。 我遵循这个伟大的指南: http : //sahatyalkabov.com/how-to-implement-password-reset-in-nodejs/ 。 这99%的工作。 我不得不修改它包含一些条纹function。 但是我担心我有一个严重的错误,我无法find它。 用户现在可以通过发送电子邮件的过程,input一个新的密码,并login。另一封电子邮件说,他们的密码已成功更新。 全部完美。 然而。 因为某些原因。 新密码没有被保存。 用户只能使用旧密码login。 我已经尝试了所有我能想到的方法来解决这个问题。 我还有其他几个程序员看这个,他们中没有一个能够弄清楚它在世界上是如何工作的。 目前的想法是,会议可能没有正确结束,但我们试图破坏会议,它仍然没有工作。 任何帮助不胜感激。 完整设置: 用户模式: var UserSchema = new mongoose.Schema({ username: { type: String, required: true, unique: true }, password: String, datapoint: String, email: { type: String, required: true, unique: true }, resetPasswordToken: String, resetPasswordExpires: Date }); UserSchema.pre('save', […]

护照本地策略和cURL

我想用CURLtesting我的node.js + express + passport.jstesting应用程序(RESTful)。 我的代码: var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; // Define the strategy to be used by PassportJS passport.use(new LocalStrategy( function(username, password, done) { if (username === "admin" && password === "admin") // stupid […]

Passport.js和Mongoose.js在login时填充用户 – 在req.user上丢失填充字段

使用Mongoose.js,我的身份validation方法会填充字段“companyRoles._company”,但是当我试图访问req.user对象中相同的填充字段时,填充的数据将恢复为公司参考ID。 //Authentication UserSchema.static('authenticate', function(email, password, callback) { this.findOne({ email: email }) .populate('companyRoles._company', ['name', '_id']) .run(function(err, user) { if (err) { return callback(err); } if (!user) { return callback(null, false); } user.verifyPassword(password, function(err, passwordCorrect) { if (err) { return callback(err); } if (!passwordCorrect) { return callback(null, false); } return callback(null, user); }); }); }); //login post […]

护照js无法在跨网域中维护会话

我正在使用护照JS,快速和mongoose做一个API。 当我在同一个域中testing它时,它保持会话并正常工作。 但是在跨域,它失败了。 任何线索如何维护会议跨域使用相同的configuration。 以下是代码 allowCrossDomain = function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); res.header("Access-Control-Allow-Headers", req.headers["access-control-request-headers"]); // res.header("Access-Control-Allow-Credentials", "true"); if ("OPTIONS" == req.method) { res.send(200); } else { next(); } //allow all crossDomain request app.use(allowCrossDomain); //session handling app.use(express.cookieParser("gallery")); app.use(express.session()); app.use(passport.initialize()); app.use(passport.session()); app.use(function(req, res, next) { // check if client sent […]

护照和连接闪光灯:req.flash不是一个function

我正在学习passport flash消息,并且在运行我的脚本时遇到了这个错误: req.flash is not a function 这是我的configuration: var flash=require("connect-flash"); app.use(flash()); passport.use(new LocalStrategy(function(req,username, password,done) { process.nextTick(function() { UserDetails.findOne({'username': username}, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false,req.flash('message','Invalid username or password')); } if (user.password != password) { return done(null, false,req.flash('message','Invalid username or password' )); } return done(null, user); }); […]

错误:无法将用户序列化到会话中。 错误的函数传递给serializeUser()?

我正在尝试使用Node的Express框架来完成我的第一步。 我试图使用Passport来实现一个很小的身份validation示例。 但是,我无法做到这一点。 我不断收到错误: Error: failed to serialize user into session 。 我安装了节点检查器,试图看看发生了什么事情。 显然,我的序列化函数正在被调用,它执行done(null, 0)正如所料。 我试着看看护照代码,但我不明白是什么问题。 这几乎是我第一次尝试Node应用程序,所以我不熟悉代码。 有人可以给我一个提示吗? 谢谢。 var express = require('express'); var jade = require('jade'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var app = express(); /* * Settings */ app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.session({ […]