Javascript 环回IO OAuth不工作

Javascript 环回IO OAuth不工作,javascript,node.js,oauth-2.0,loopbackjs,strongloop,Javascript,Node.js,Oauth 2.0,Loopbackjs,Strongloop,我正在尝试让https环回服务器启动并运行,受OAuth保护。我正在使用环回网关示例项目作为参考。但是由于某种原因,我无法让OAuth的部分工作。我的意思是,即使在添加了OAuth片段之后,API似乎也没有受到保护。即使请求中没有令牌,我也会得到响应。这就是我的server.js的样子 var loopback=require('loopback'); var boot=require('loopback-boot'); var https=require('https'); var path

我正在尝试让https环回服务器启动并运行,受OAuth保护。我正在使用环回网关示例项目作为参考。但是由于某种原因,我无法让OAuth的部分工作。我的意思是,即使在添加了OAuth片段之后,API似乎也没有受到保护。即使请求中没有令牌,我也会得到响应。这就是我的server.js的样子

var loopback=require('loopback');
var boot=require('loopback-boot');
var https=require('https');
var path=require('path');
var httpsredict=require('./中间件/https重定向');
var站点=要求('./站点');
var sslConfig=require('./ssl-config');
变量选项={
密钥:sslConfig.privateKey,
证书:sslConfig.certificate
};
var app=module.exports=loopback();
//设置/favicon.ico
app.middleware('initial',loopback.favicon());
//请求预处理中间件
中间件('initial',loopback.compress());
app.middleware('session',loopback.session({saveUninitialized:true,
resave:true,secret:“键盘猫”});
//--在此处添加预处理中间件--
//引导脚本装载RESTAPI之类的组件
启动(应用程序名称);
//将http请求重定向到https
var httpsPort=app.get('https-port');
中间件('routes',httpsredict({httpsPort:httpsPort}));
var oauth2=require('loopback-component-oauth2')(
应用程序{
//oAuth2元数据持久性的数据源
数据源:app.dataSources.pg,
登录页面:'/login',//登录页面url
loginPath:'/login'//登录处理url
});
应用程序集(“查看引擎”、“ejs”);
app.set('views',path.join('views');
//设置登录/注销表单
app.get('/login',site.loginForm);
app.get('/logout',site.logout);
app.get('/account',site.account);
app.get('/callback',site.callbackPage);
var auth=oauth2.authenticate({session:false,scope:'demo'});
app.use(['/protected','/api','/me','/_internal',auth);
app.get('/me',函数(req,res){
//req.authInfo是使用提供的'info'参数设置的
//`BearerStrategy`。它通常用于指示令牌的范围,
//并用于访问控制检查。出于说明目的,此
//示例仅返回响应中的范围。
res.json({'user_id':req.user.id,名称:req.user.username,
accessToken:req.authInfo.accessToken});
});
signupTestUserAndApp();
//var rateLimiting=要求('./中间件/费率限制');
//中间件('routes:after',ratelimining({limit:100,interval:60000}));
//var proxy=require('./中间件/proxy');
//var proxyOptions=require('./middleware/proxy/config.json');
//应用程序中间件('routes:after',代理(proxyOptions));
app.middleware('文件',
loopback.static(path.join(_dirname,../client/public'));
app.middleware('files','/admin',
静态(path.join(_dirname,../client/admin'));
//到这一步的请求将不会得到处理
//通过任何中间件。将它们转换为404错误
//这将在以后处理。
中间件('final',loopback.urlNotFound());
//最终的错误处理程序。
中间件('final',loopback.errorHandler());
app.start=函数(仅限httpOnly){
if(httpOnly==未定义){
httpOnly=process.env.HTTP;
}
server=https.createServer(选项,应用程序);
server.listen(app.get('port'),function(){
var baseUrl=(httpOnly?'http://':'https://')+app.get('host')+':'+app.get('port');
app.emit('started',baseUrl);
log('LoopBack server listing@%s%s',baseUrl',/');
});
返回服务器;};
//如果`$node server.js启动服务器`
if(require.main==模块){
app.start();
}
函数signupTestUserAndApp(){
//创建虚拟用户和客户端应用程序
app.models.User.create({username:'bob',
密码:“secret”,
电邮:'foo@bar.com'},函数(错误,用户){
如果(!err){
console.log('用户注册:用户名=%s密码=%s',
user.username,“secret”);
}
//黑客将应用程序id设置为固定值,这样我们就不必更改
//客户端设置
app.models.Application.beforeSave=函数(下一步){
这个id=123;
this.restApiKey='secret';
next();
};
app.models.Application.register(
user.username,
“演示应用程序”,
{
公钥:sslConfig.certificate
},
功能(错误,演示){
如果(错误){
控制台错误(err);
}否则{
console.log('已注册的客户端应用程序:id=%s密钥=%s',
demo.id、demo.restApiKey);
}
}
);
});

}
我明白了。这里有更多信息,但基本上我的rest api中间件配置不正确。

从今天起链接已断开。。。看起来在IBMs接管之后,这是不推荐的,建议使用IBMs api网关。