<pre><code>
// 示例代码:基于OAuth2.0的统一身份认证平台接口实现
const express = require('express');
const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2').Strategy;
const app = express();
// 配置OAuth2策略
passport.use(new OAuth2Strategy({
authorizationURL: 'https://example.com/oauth2/authorize',
tokenURL: 'https://example.com/oauth2/token',
clientID: 'YOUR_CLIENT_ID',
clientSecret: 'YOUR_CLIENT_SECRET',
callbackURL: 'http://localhost:3000/auth/callback'
},
function(accessToken, refreshToken, profile, cb) {
return cb(null, profile);
}
));
// 初始化会话
app.use(express.session({ secret: 'your session secret' }));
app.use(passport.initialize());
app.use(passport.session());
// 认证路由
app.get('/auth', passport.authenticate('oauth2'));
app.get('/auth/callback',
passport.authenticate('oauth2', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
// 保护路由
app.get('/', ensureAuthenticated, function(req, res){
res.send('Hello ' + req.user.displayName);
});
// 中间件确保用户已登录
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
}
app.listen(3000, function() {
console.log('Server running on port 3000');
});
</code></pre>