如何在节点 js 中使用 bitbucket 对用户进行身份验证

问题描述

我想使用 bitbucket 配置文件express js 中的每个用户进行身份验证,当用户username 应用程序中输入 passwordexpress js 时,凭据将使用 bitbucket 进行身份验证。

我尝试了什么:

我从我的帐户创建了一个 clientIdsecret key,然后将这些键添加到我的 express js 项目中。但正如我研究的那样,这些密钥是特定于帐户的,这意味着只有用户才能登录我正在使用的 clientId 和密钥。但我想对每个用户进行身份验证

我的 app.js 文件包含以下代码:-

    var express = require('express'),passport = require('passport'),util = require('util'),BitbucketStrategy = require('passport-bitbucket-oauth2').Strategy;
    
    var BITBUCKET_CLIENT_ID = "test";
    var BITBUCKET_CLIENT_SECRET = "test";
    
    // Passport session setup.
    passport.serializeUser(function(user,done) {
      done(null,user);
    });
    
    passport.deserializeUser(function(obj,obj);
    });
    
    // Use the BitbucketStrategy within Passport.
    passport.use(new BitbucketStrategy({
        clientID: BITBUCKET_CLIENT_ID,clientSecret: BITBUCKET_CLIENT_SECRET,callbackURL: "http://127.0.0.1:3000/auth/bitbucket/callback"
       // callbackURL: "http://127.0.0.1:3000/account"
      },function(token,tokenSecret,profile,done) {
        // asynchronous verification,for effect...
        process.nextTick(function () {
          console.log(profile);
          // To keep the example simple,the user's Bitbucket profile is returned to
          // represent the logged-in user.  In a typical application,you would want
          // to associate the Bitbucket account with a user record in your database,// and return that user instead.
          return done(null,profile);
        });
      }
    ));
    var app = express.createServer();
    
    // configure Express
    app.configure(function() {
      app.set('views',__dirname + '/views');
      app.set('view engine','ejs');
      app.use(express.logger());
      app.use(express.cookieParser());
      app.use(express.bodyParser());
      app.use(express.methodoverride());
      app.use(express.session({ secret: 'keyboard cat' }));
      // Initialize Passport!  Also use passport.session() middleware,to support
      // persistent login sessions (recommended).
      app.use(passport.initialize());
      app.use(passport.session());
      app.use(app.router);
      app.use(express.static(__dirname + '/public'));
    });
    
    app.get('/',function(req,res){
      res.render('index',{ user: req.user });
    });
    
    app.get('/account',ensureAuthenticated,res){
      res.render('account',{ user: req.user });
    });
    
    app.get('/login',res){
      res.render('user-login',{ user: req.user });
    });
    
    // GET /auth/bitbucket
    app.get('/auth/bitbucket',passport.authenticate('bitbucket'),res){
        // The request will be redirected to Bitbucket for authentication
      });
    
    // GET /auth/bitbucket/callback
    app.get('/auth/bitbucket/callback',passport.authenticate('bitbucket',{ failureRedirect: '/login' }),res) {
        res.redirect('/');
      });
    
    app.get('/logout',res){
      req.logout();
      res.redirect('/');
    });
    app.listen(3000);
    
    // Simple route middleware to ensure user is authenticated.
    function ensureAuthenticated(req,res,next) {
      if (req.isAuthenticated()) { return next(); }
      res.redirect('/login')
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...