CAP自定义事件处理程序和登录用户

2020-08-17 05:44发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果通过APP路由器进行数据访问(如XSUAA身份验证所建议的那样),则转移的用户将始终是"匿名":

 srv.before('READ','Partner',request => {
         var user = request.user.id; //<<<总是"匿名"})

其他信息

default-env.json

 {
     "目的地":[
         {
             " name":" srv-binding",
             " url":" https://<我们的公司> .cfapps.eu10.hana.ondemand.com",
             " forwardAuthToken":true
         }
     ],
     " VCAP_SERVICES":{
         " xsuaa":[
             {
                 "名称":" wsw_vdr-uaa","标签":" xsuaa","标签":[" xsuaa"],
                 "凭据":{
                     " apiurl":" https://api.authentication.eu10.hana.ondemand.com",
 .... 

xs-app.json

 {
     " welcomeFile":" webapp/index.html",
     " authenticationMethod":"路由",
     "路线":[
         {
             " source":" ^/webapp/index.html",
             " target":" index.html",
             " localDir":" webapp/",
             " cacheControl":"无需缓存,无需存储,必须重新验证"
         },
         {
             " source":" ^/webapp/(.*)$",
             " target":" $ 1",
             " localDir":" webapp/",
             " authenticationType":" xsuaa"
         },
         {
             " source":" ^/logout.html $",
             " localDir":" webapp/",
             " authenticationType":"无"
         },
         {
             " source":" ^(。*)$",
             " destination":" srv-binding",
             " authenticationType":" xsuaa"
         }
     ],
     "登出": {
         " logoutEndpoint":"/img/logout",
         " logoutPage":" logout.html"
     }
 }
 

mta.yaml

 ############# SERVER MODULE ###########################
  -名称:wsw_vdr-srv
    类型:nodejs
    路径:srv
    参数:
      记忆体:256M
      磁盘配额:512M
    特性:
      退出:1#由deploy.js任务终止
    要求:
     ####从CAP配置中提取的资源####
     -名称:wsw_vdr-db
     -名称:wsw_vdr-uaa
    提供:
     -名称:CAP服务使用者(例如approuter)所需的srv-binding#
       特性:
         srv-url:$ {default-url}
  ################################################  ##########
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果通过APP路由器进行数据访问(如XSUAA身份验证所建议的那样),则转移的用户将始终是"匿名":

 srv.before('READ','Partner',request => {
         var user = request.user.id; //<<<总是"匿名"})

其他信息

default-env.json

 {
     "目的地":[
         {
             " name":" srv-binding",
             " url":" https://<我们的公司> .cfapps.eu10.hana.ondemand.com",
             " forwardAuthToken":true
         }
     ],
     " VCAP_SERVICES":{
         " xsuaa":[
             {
                 "名称":" wsw_vdr-uaa","标签":" xsuaa","标签":[" xsuaa"],
                 "凭据":{
                     " apiurl":" https://api.authentication.eu10.hana.ondemand.com",
 .... 

xs-app.json

 {
     " welcomeFile":" webapp/index.html",
     " authenticationMethod":"路由",
     "路线":[
         {
             " source":" ^/webapp/index.html",
             " target":" index.html",
             " localDir":" webapp/",
             " cacheControl":"无需缓存,无需存储,必须重新验证"
         },
         {
             " source":" ^/webapp/(.*)$",
             " target":" $ 1",
             " localDir":" webapp/",
             " authenticationType":" xsuaa"
         },
         {
             " source":" ^/logout.html $",
             " localDir":" webapp/",
             " authenticationType":"无"
         },
         {
             " source":" ^(。*)$",
             " destination":" srv-binding",
             " authenticationType":" xsuaa"
         }
     ],
     "登出": {
         " logoutEndpoint":"/img/logout",
         " logoutPage":" logout.html"
     }
 }
 

mta.yaml

 ############# SERVER MODULE ###########################
  -名称:wsw_vdr-srv
    类型:nodejs
    路径:srv
    参数:
      记忆体:256M
      磁盘配额:512M
    特性:
      退出:1#由deploy.js任务终止
    要求:
     ####从CAP配置中提取的资源####
     -名称:wsw_vdr-db
     -名称:wsw_vdr-uaa
    提供:
     -名称:CAP服务使用者(例如approuter)所需的srv-binding#
       特性:
         srv-url:$ {default-url}
  ################################################  ##########
 
付费偷看设置
发送
4条回答
亦是此间程序员
1楼 · 2020-08-17 06:21.采纳回答

我找到了解决方案。 好吧,这是我的错误。 我定义了两个服务,一个服务带有" requires"管理员角色注释,另一个服务(仅用于测试)没有" requires"。 尽管我是通过应用路由器实例登录的,但是使用"非必需"服务不会返回任何用户。 调用安全服务中确定的功能:

 service SecuredService @ {requires:'admin'){
 函数getUser()返回String(40);
 } 
并编码为
 srv.on('getUser',async(req)=> {
             返回'User:'+ req.user.id;
         })
 

显示正确的登录用户。

梦想连接
2楼-- · 2020-08-17 06:06

您好 Stefan Brombeiss

您的依存关系中是否有护照,@ sap/xssec @ ^ 2和@ sap/xsenv?

在package.json或.cdsrc.json中,您的身份验证配置是什么?

最好,
Sebastian

小灯塔
3楼-- · 2020-08-17 06:00

Approuter模块看起来不错。 但是,附加UI模块的目的是什么?

hongfeng1314
4楼-- · 2020-08-17 06:19

如果可能,请在公共Git存储库中共享具有相同问题的示例项目。 尝试一下我的示例项目 bookshop-demo

一周热门 更多>