小编roc*_*cer的帖子

微服务:每个服务中的集中授权与授权

假设我有一个使用API​​网关构建的微服务系统.

通过网关后的每个请求都必须通过身份验证服务(防火墙模式)进行预身份验证

防火墙模式

但授权怎么样?例如,我在酒店管理系统中根据它们有3个模型和3个服务:

用户

  • 每个用户可以有很多酒店

旅馆

  • 酒店由单个用户(所有者)拥有
  • 每个酒店可以有很多员工(也是一个用户)
  • 一个酒店可以有很多房间
  • 为了简单起见,我们假装一名员工拥有与酒店所有者相同的权利

房间

  • 一个房间只能属于一个酒店
  • 所有者和员工只能编辑他们拥有/雇用的酒店的房间

编辑房间Y的示例请求在经过身份验证后将具有经过验证的声明,其声明类似于"我是用户X".

要知道X是否有权对Y进行编辑,我必须向酒店服务部门提出要求" Y 's酒店是否与X相关联(由X个人拥有)?".

问题是:我在哪里提出这些要求?
让Gateway 在向客房服务部门提出客户要求之前询问酒店服务,或让客房服务部门自行询问酒店服务部门.何时选择一个而不是另一个?有什么好处?


而且,这种建模对我来说似乎有点不对劲.围绕微服务的所有这些关系只会使我的系统变得非常复杂.随着它的发展,我越来越难以可视化服务之间的工作流程.有这个问题的解决方案吗?一个集中关系服务,可能利用像Neo4j这样的图形数据库?

architecture microservices

8
推荐指数
1
解决办法
2238
查看次数

数据绑定自定义项目列表

如何将自定义项列表绑定到ListView或RecyclerView?仅使用Android DEFAULT DataBinding(无外部库)

<layout>
    <data>
        <import type="java.util.List"/>
        <variable name="listOfString" type="List&lt;String>"/>
    </data>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:?????="@{listOfString}/>  <!--Like we have ItemsSource in WPF-->

</layout>
Run Code Online (Sandbox Code Playgroud)

我来自WPF背景,其中有一个ItemTemplate选项.使用ItemTemplate,您可以纯粹通过XML将数据映射到视图.就像是:

<ListView ItemsSource="{Binding Path=UserCollection}">
  <ListView.ItemTemplate>
    <!--Populate template with each user data-->
    <DataTemplate>
      <WrapPanel>
        <!--Bind to user.Name-->
        <TextBlock Text="{Binding Name}" FontWeight="Bold" />
        <TextBlock Text="{Binding Age}" FontWeight="Bold" />
        <TextBlock Text="{Binding Mail}" />
      </WrapPanel>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

android android-databinding

7
推荐指数
1
解决办法
7073
查看次数

将多个Id参数传递给Web Api GET或DELETE请求

我有一个由2个密钥识别的业务实体,例如:

class UserItem {
    [Key]
    [Column(Order = 1)]
    public string UserId {get;set;}
    [Key]
    [Column(Order = 2)]
    public string ItemName {get; set;}
    public int Count {get; set;}    
}
Run Code Online (Sandbox Code Playgroud)

现在使用ASP.NET Web Api,如何使HTTP GET或HTTP DELETE接受多个参数?目前默认生成的模板只接受1个密钥:

class ItemController : ApiController {
    .....

    //api/item/[key]
    [HttpGet]
    [ResponseType(typeof(UserItem))]
    public async Task<IHttpActionResult> GetUserItem(string id)
    {
        UserItem item = await db.useritems.FindAsync(id);
        ......
    }

    ......
}
Run Code Online (Sandbox Code Playgroud)

db是我的datacontext,我正在使用EntityFramework 6和ASP.NET Web Api 2

c# asp.net-web-api

6
推荐指数
1
解决办法
6316
查看次数

MongoDb后台索引和唯一索引

当您在 MongoDb 中创建索引时。有 2 个选项:

  • 进行前台索引并在执行此操作时锁定所有写入操作
  • 进行后台索引并仍然允许同时写入记录

我的问题是:

如何在后台建立像唯一索引这样的东西?如果在建立索引时插入重复文档怎么办?

indexing mongodb

5
推荐指数
1
解决办法
2998
查看次数

Firebase java对象的序列化和继承

它是否也序列化继承的属性?

@IgnoreExtraProperties
public class Item extend BaseObservable {
    private String foo;

    public Item() { }

    @Bindable
    public String getFoo() {
        return this.foo;
    }
}
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

4
推荐指数
1
解决办法
1546
查看次数

更改已禁用控件的颜色

如何更改已禁用的EditText或任何控件(不再灰显)的控件颜色,最好使用styles.xml中的主题或layout.xml上的direct属性,而不是代码中的

android

2
推荐指数
1
解决办法
1834
查看次数

Firebase推送唯一性范围

文档说Firebase push生成一个唯一的密钥,我想知道这个密钥在我的整个数据库(甚至是GuId)中是唯一的,还是在它被推送到的节点中是唯一的

我正在像这样构建我的数据库(根据他们的指南,我将其压平了):

users {
    -KIH-uFo_2jW16Ue8JNH { //User-Key
       username : "Johnny Dummy"
       gender : "male"
    }
}
items {
    -KIH-uFo_2jW16Ue8JNH { //User-Key
        -KIH6iaw5uAS856i6-u9 : { //Item-Key
            itemname : "Item Dummy"
            count : 3
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我获取所有用户的所有商品时,Item-Key的唯一性范围对我很重要

firebase firebase-realtime-database

2
推荐指数
1
解决办法
950
查看次数

获取父路由器的参数

假设我有2个嵌套在一起的路由器,如下所示:

var appRouter = express.Router();
var childRouter = express.Router();

appRouter.use('/:parentId/childpath', childRouter);
childRouter.get('/:childId', (req, res, next) => {
    console.log(req.params); //only childId
    // How do I get parentId ?
});
Run Code Online (Sandbox Code Playgroud)

有没有办法进入parentId子路由器处理程序?

node.js express

2
推荐指数
1
解决办法
273
查看次数

Go如何导入解决依赖关系?

在 Go 中,当我导入如下依赖项时:

import "github.com/spf13/viper"
Run Code Online (Sandbox Code Playgroud)

Go 将按什么顺序查找哪些目录?

go

1
推荐指数
1
解决办法
936
查看次数