点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我尝试使用NodeJS编写API。 我使用了SAP的几个演示之一。 为了从HANA-DB获得结果,每个请求都必须使用JSON Web令牌进行身份验证。 为此,我们使用Passport-Lib并将其与xssec-Strategy链接,Passport需要此xssec-Strategy来验证用户身份。 我不会让它工作。 在每次请求时,我都会得到 401未经授权,并且我不知道自己在做什么错。 我需要通过JWT进行授权,因为通过。 get("/img/route",function(req,res){var client = req.db; var hdbcon = new hdbext.getConnection(client); ...}) ; 。我能够轻松触发DB-Call。
这是我的代码:
"严格使用";
var port = process.env.PORT || 3000,
express = require(" express"),
app = express(),
xssec = require(" sap-xssec"),
xsjs = require(" sap-xsjs"),
xsenv = require(" sap-xsenv"),
护照= require(" passport"),
xsHDBConn = require(" sap-hdbext")
;
//
//JSON Web令牌
//身份验证模块配置
//
app.use(passport.initialize());
passport.use(新的xssec.JWTStrategy(xsenv.getServices({
uaa:{
标记:" xsuaa"
}
})。uaa));
//用于每个请求此身份验证模式
app.use(
passport.authenticate(" JWT",{
会话:false
}),
xsHDBConn.middleware()
);
//
//配置HANA
//用于XSJS(具有重定向功能)
//
var选项= xsjs.extend({
匿名:true//,//删除以对呼叫进行身份验证
//redirectUrl:"/img/index.xsjs"
});
选项= xsjs.extend(选项,xsenv.getServices({
哈娜:{
标记:" hana"
}
}));
//xsjs(options).listen(port); //仅XSJS需要
app.listen(端口);
console.log("服务器正在监听端口%d",端口);
app.all("/",function(req,res){
res.json({状态:200,消息:"确定",数据:"有效!"});
});
/**
*用户管理
*/
var userAPI = require(" ./api/user");
app.use("/img/user",userAPI);
/**
*未知路线
*/
app.all(" *",function(req,res){
res.json({状态:404,消息:"未知目标"。});
});
谢谢您的帮助!
>在每个请求上,我都会得到401未经授权,并且我不知道自己在做什么错。
您是否已重定向到UAA登录? 您是否将Web模块作为路由放置在node.js模块的前面? 如果直接访问node.js模块,则获得401未经授权是完全正常的。
嗨,汤玛斯·荣格
如果在server.js中未对护照进行身份验证(在下面的代码中有注释),并且一旦启用以下代码,我们的节点服务就可以正常工作,我们会在服务URL上获得未授权的错误,这是可以预期的。 但是,当我们使用应用程序路由器URL(而不是Web应用程序URL)时,我们可以通过调用/node route访问CDS odata,但是我们无法访问在node express路由器中定义的任何其他路由,我们缺少了什么 ? 浏览器中出现503服务暂时性不可用错误。 我正在关注Hana 2.0 SP03教程文档,您有与Hana 2.0 SP04类似的文档吗?
您可以从下面的仓库中找到我的代码。
GitHub存储库链接
谢谢
Sasi
一周热门 更多>