问题描述
我想使用 bitbucket 配置文件对 express js
中的每个用户进行身份验证,当用户在 username
应用程序中输入 password
和 express js
时,凭据将使用 bitbucket 进行身份验证。
我尝试了什么:
我从我的帐户创建了一个 clientId
和 secret key
,然后将这些键添加到我的 express js 项目中。但正如我研究的那样,这些密钥是特定于帐户的,这意味着只有用户才能登录我正在使用的 clientId
和密钥。但我想对每个用户进行身份验证
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 (将#修改为@)