小编ash*_*hin的帖子

Finbuckle.MultiTenant 路由策略和 IdentityServer4 租户登录页面重定向

我们的目标是构建可以对多个租户进行身份验证的多租户身份 server4 应用程序。我们一直在尝试将Finbuckle Mutitenancy与 IdentityServer4集成来实现这一点。已经实施了文档中提到的路由策略的变体来解析每个请求的租户。当客户端请求 IdentityServer 的连接/授权端点(路由 URL 中没有租户标识符)时,身份服务器重定向到的登录 URL 会丢失租户标识符。自定义多租户策略成功执行并以预期方式设置租户信息:使用 http://localhost/Identity/Account/Login 而不是 http://localhost/tenant1/Account/Login。

我们已经提供了我们自己的IMul​​tiTenantStrategy实现来首先从路由中检索租户标识符,如果没有,则从 IdentityServer 的请求参数(自定义参数,从请求令牌的客户端添加的“租户”。)。该MultiTenantMiddleware成功地使用自定义的策略获取承包者标识符,并设置必要的tenantInfo,存储策略等。但随后的连接/授权端点重定向到http://本地主机/身份/帐号/登录跳过租户模板。

但是,如果我们使用FallbackStrategy,它定义了静态租户标识符以在所有其他策略失败时使用,那么授权端点会将浏览器重定向到 http://localhost/tenant1/Account/Login,前提是在 FallbackStrategy 中使用了tenant1静态标识符。这是代码片段:

IdentityServer 的配置服务:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>();
        services.AddDefaultIdentity<IdentityUser>()
            .AddEntityFrameworkStores<ApplicationDbContext>();

        services.AddControllersWithViews().AddRazorRuntimeCompilation();
        services.AddRazorPages(options =>
        {
            // Since we are using the route multitenant strategy we must add the
            // route parameter to the Pages conventions used by Identity.
            options.Conventions.AddAreaFolderRouteModelConvention("Identity", "/Account", model =>
            {
                foreach (var selector in model.Selectors) …
Run Code Online (Sandbox Code Playgroud)

identityserver4 asp.net-core-3.1

5
推荐指数
0
解决办法
717
查看次数

更改导航属性的默认列名称

我有以下课程

public class TreeItem
{
    public long Id { get; set; }
    public Tree Tree { get; set; }
    public string Model { get; set; }
    public string Version { get; protected set; }
    public string Index { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)

并且我想更改属性树的默认数据库的列名称。作为默认实体框架,在databse中寻找“ TreeId”列,但是我们的名字约定说此列应命名为“ tree_id”

如果我尝试将其设置如下:

 modelBuilder.Entity<TreeItem>().Property(t => t.Tree).HasColumnName("tree_id");
Run Code Online (Sandbox Code Playgroud)

Ef向我抛出一条异常消息:

由于实体类型“ TreeItem”已配置为导航属性,因此无法为属性“ Tree”调用“属性”。属性只能用于配置标量属性。

是否可以将属性Tree的默认列名称从“ TreeId”更改为“ tree_id”?

c# asp.net entity-framework-core asp.net-core

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