小编lag*_*lex的帖子

Passport-facebook从回调函数中访问req对象

在Facebook上对nodejs护照身份验证的回调中,如何req在回调中获取对象?

passport.use(new FacebookStrategy({
    clientID: 123456789,
    clientSecret: 'SECRET',
    callbackURL: "http://example.com/login/facebook/callback"
  },
  function(accessToken, refreshToken, profile, done){
    // Is there any way to get the req object in here?
  }
));
Run Code Online (Sandbox Code Playgroud)

authentication facebook node.js facebook-authentication passport.js

10
推荐指数
2
解决办法
4072
查看次数

python(django)hashlib vs Nodejs crypto

我正在将Django站点移植到Node.js,我正在尝试在Node中重新实现Django set password方法.这是Django代码

from django.utils.crypto import (
    pbkdf2, get_random_string)

import hashlib

password = 'text1'
algorithm = "pbkdf2_sha256"
iterations = 10000
salt = 'p9Tkr6uqxKtf'
digest = hashlib.sha256
hash = pbkdf2(password, salt, iterations, digest=self.digest)
hash = hash.encode('base64').strip()
print "%s$%d$%s$%s" % (self.algorithm, iterations, salt, hash)
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的Node.js代码:

var password = 'text1';
var hashed = crypto.createHash('sha256').update(password, 'utf8').digest();
var salt = 'p9Tkr6uqxKtf';
var algorithm = "pbkdf2_sha256";
var iterations = 10000;
crypto.pbkdf2(hashed, salt, iterations, 32, function(err, encodedPassword) {
    var newPass = new Buffer(encodedPassword).toString('base64');
    console.log(encodedPassword);

    // console.log(Buffer(encodedPassword, 'binary').toString('hex')); …
Run Code Online (Sandbox Code Playgroud)

python django hashlib node.js passport.js

10
推荐指数
1
解决办法
1853
查看次数

nodejs中的简单登录页面使用express和带mongodb的护照

我创建了一个简单的登录表单,使用Jade和Express at/login,表单数据通过POST发送到/ login

起初它只是基于字符串的匹配(如果用户名== &&密码==)然后重定向到/ home或重定向到/ login

简单.

现在我想让它存储在mongodb数据库中的数据库驱动程序,用户名和密码,匹配db的用户名密码并执行程序.

我希望使用passportJS,但我完全不知所措,从创建数据库到配置护照.

有人可以帮助我如何制作一个简单的数据库驱动的登录页面?我对nodejs的东西很新.任何帮助都会受到重视

login mongodb node.js express passport.js

10
推荐指数
1
解决办法
3万
查看次数

没有jquery的第二个孩子

我想找个方法来选择#inner3......

 <div id="outer">
      <div id="inner1"> </div>
      <div id="inner2"> </div>
      <div id="inner3"> of interest </div>
      <div id="inner4"> </div>
 </div>
Run Code Online (Sandbox Code Playgroud)

...从最后一次计数(#inner4)因为有时#2不存在...

 <div id="outer">
      <div id="inner1"> </div>
      <div id="inner2"> of interest </div>
      <div id="inner3"> </div>
 </div>
Run Code Online (Sandbox Code Playgroud)

并且只有3个项目(因此#inner3变为#inner2).

请注意,#id为了清楚起见,并没有真正出现在我的工作中.

我正在使用,body > .. > div:nth-child(3)但如上所述,从顶部算起是一个问题.

对此有何解决方案?

javascript dom

10
推荐指数
2
解决办法
3472
查看次数

如何从客户端使用Twitter API?

我正在尝试使用angularjs和护照从twitter获取信息.

我使用护照js通过OAuth进行了身份验证 - 它运行良好 - 在会话中保存了用户信息.

现在我尝试在任何端点(包括V1.1和V1)的twitter API上运行任何GET命令,但它一直在抱怨授权.

示例:在我的控制器中执行

        $http.jsonp(https://api.twitter.com/1/statuses/user_timeline.json, {

        })
Run Code Online (Sandbox Code Playgroud)

给我一个错误:

        GET https://api.twitter.com/1/statuses/user_timeline.json 401 (Unauthorized)
Run Code Online (Sandbox Code Playgroud)

此命令在twitter控制台中有效(我使用jsonp来避免跨域问题).

我应该使用此GET请求手动传递任何其他标头 - sa auth_token等吗?

或者为什么它不起作用?我是否应该利用我已经使用API​​进行身份验证的事实?我红了https://dev.twitter.com/docs/auth/authorizing-request但是并没有安静地理解.

谢谢你的帮助,

twitter oauth angularjs passport.js

10
推荐指数
1
解决办法
7606
查看次数

PassportJS - 自定义回调并将Session设置为false

是否可以使用自定义回调和禁用会话?在文档中,它显示了如何禁用会话和自定义回调,但我如何组合它们?

app.get('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/login'); }

    req.logIn(user, function(err) {

      // I'm getting an error here
      // [Error: Failed to serialize user into session]

      if (err) { return next(err); }
      return res.redirect('/users/' + user.username);
    });
  })(req, res, next);
});
Run Code Online (Sandbox Code Playgroud)

session node.js express passport.js

10
推荐指数
1
解决办法
5617
查看次数

如何从Node.js代码访问事件循环?

是否有可以从Node.js代码执行的本机函数,该代码输出一个数组或一个对象,其中包含有关当前应该在事件循环中的内容的信息?

node.js

10
推荐指数
2
解决办法
1018
查看次数

确定扑克中的获胜金额而不创建边池

我正在尝试进行扑克模拟并获得有关扑克桌的以下数据

  • 每个球员贡献了多少钱
  • 每个玩家的"手牌得分"(翻牌后)(即player[0].score == player[1].score,他们并列)

我不知道每个玩家应该赢得多少,而不需要创建副圈并为每个玩家分配玩家.

例如,

player[0].contributed = 100
player[1].contributed = 80
player[2].contributed = 20
Run Code Online (Sandbox Code Playgroud)

player[0].score = 10
player[1].score = 2
player[2].score = 10
Run Code Online (Sandbox Code Playgroud)

total_pot = 200;
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我首先需要返回player[0]20并将其从锅中取出吗?

然后,因为player[0]并且player[2]已经并列第一名并且player[1]已经输了,所以应该将底池划分为:

player[0].received = 170
player[1].received = 0
player[2].received = 30
Run Code Online (Sandbox Code Playgroud)

然后,如果player[1]赢了,应该将底池划分为:

player[0].received = 20
player[1].received = 180
player[2].received = 0
Run Code Online (Sandbox Code Playgroud)

algorithm poker

9
推荐指数
1
解决办法
2111
查看次数

护照:登录和帐户注册的不同重定向

我在我的应用程序中使用护照模块(github身份验证),我想根据操作重定向...我检查它是否只是正常登录或用户是否第一次登录.

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 a user record in your database,
      // and return that user instead.

      Models_User.findOrCreateUser(profile, function(msg){
        console.log("auth type:" + msg);
      });

      return done(null, profile);

    });
  }
)); …
Run Code Online (Sandbox Code Playgroud)

node.js express passport.js

9
推荐指数
1
解决办法
6027
查看次数

Express.js/Passport.js:req.user存储在哪里?

我正在开发一个将部署到Heroku的Web应用程序.

我选择使用Node.js堆栈,因为我厌倦了"传统"的Web框架.我在Express.js上设计应用程序.与Django或Grails相比,我发现它非常高效和直观.

因此,Web应用程序将为访客和经过身份验证的用户提供功能.当应用程序部署到Heroku(一个云平台服务)时,由于Heroku的负载平衡器和实践,应用程序不能在服务器内部存储任何内部状态.事实上,在分布式环境中拥有内部状态也是糟糕的设计.

我的本地开发设置有一个Redis实例(用于存储会话)和一个MongoDB实例(用于存储用户数据,例如Facebook用户详细信息).我使用Passport.js和passport-facebook来处理身份验证.目前,我只实施了Facebook身份验证,至少在本地工作正常.

问题是我不确定也没有读过Express/Passport如何神奇地填充req.user对象.我对此有点怀疑,感觉就像是存储在服务器的内存中.

passport.serializeUser(function(user, done) {
    console.log(
        "This outputs a complete" +
        "User Profile object when the user logs in.", 
        user);
    done(null, user);
});

passport.deserializeUser(function(obj, done) {
    console.log(
        "And this too, but I'm afraid that" +
        "obj comes from memory.", 
        obj);
    done(null, obj);
});
Run Code Online (Sandbox Code Playgroud)

Passport.js文档并没有很好地说明这一点.我的猜测是serializeUser()从Facebook获取用户,但是deserializeUser()从内存中获取它?

如果是这样,它是一个解决方案将原始用户数据转储到serializeUser()中的Mongo数据库,然后从deserializeUser()中获取它吗?

heroku mongodb redis express passport.js

9
推荐指数
1
解决办法
7732
查看次数