一般用途:
自16.2启动以来,Infragistics已跨所有的我们通过我们的软件包存储库为许可用户提供的UI控件; 我们一直在使用ProGet从Inedo在两个核心中管理我们的软件包场景。在这篇文章中,我们将讨论如何ProGet 帮助过美国achieve对仅允许Infragistics客户访问的提要进行包级筛选至。
问题:
我们希望将我们的私人NuGet feed公开给具有活跃订阅和提供一个我们可以公开声明的URL,但是一个只有获得许可的客户才能访问 to。 我们也希望避免执行额外的工作 (例如创建和管理新帐户a第三–派对服务)。客户应该只需要他们的Infragistics凭据即可使用Infragistics内容。
我们还需要限制他们可以浏览的产品和版本,他们已经支付的软件包。托管私有提要通常需要采用全有或全无的提要管理方法。意思是,你要么看到所有的包或者你不看到他们中的任何一个。对feed的访问通常也由feed所有者设置提前。我们希望让客户尽可能无摩擦地访问我们的费用d; needing to create个帐户并让Infragistics的人分配权限不会那么无缝。
什么是ProGet提供解决此问题:
ProGet提供分机 支持这允许我们将功能插入到浏览feed上的包的过程中。如果提要 “客户” 是Infragistics组织的成员,则内置的ActiveDirectory提供的功能ProGet会工作。由于我们的客户不是Infragistics组织的一部分,因此我们需要一个可以在ActiveDirectory。幸运的是,我们可以继承所需的功能并覆盖身份验证行为以满足我们的需求。
我们是如何做到的:
- 创建了简单的类库项目
- 包含了Inedo.SDK N u G et包作为一个依赖
- 创建了一个自定义用户目录类来处理我们自己的身份验证:
- 我nherited从的Inedo.Extensibility.UserDirectories.UserDirectory 类
- 覆盖的方法handle的用户的注册和创建e新建ProGet用户需要。
- 已创建内的用户Proget数据库,以便存储用户。
- ProGet和我们的feed,o您的自定义包过滤接管:
- 创建了一个覆盖的类Inedo.Extensibility.PackageFilters。PackageFilter
- 我们推翻了Ispackage包括方法,并执行我们自己的逻辑来确定if包与该用户相关。自用户是已通过身份验证他们的Infragistics.com帐户s,我们知道什么产品和版本他们有购买。我们将其与我们的软件包名称,版本号和发布日期进行了比较,以确定是否将其包含在客户列表中。
- 一旦我们的项目被编译和 *。inedox(*。progetx) 文件已生成,p把那个文件绑在里面ProGet扩展文件夹在 “管理器扩展” 页面中显示了我们的扩展。
- 一旦扩展是已加载由Proget,我们的自定义目录显示在 “更改用户目录” 对话框中,我们只是切换到它。
一旦用户可以访问
</ol