【问题标题】:OAuth Claims causes HttpException SqlExceptionOAuth 声明导致 HttpException SqlException
【发布时间】:2015-12-12 13:46:28
【问题描述】:

我正在使用 OAuth(Google 和 Microsoft)连接到我的 ASP.NET MVC 多租户应用程序。默认情况下,我的用户分配了 TenantID。此租户 ID 存储在声明中。但是可以为他们分配多个租户,并且在登录时可以提示选择各自的租户。 完成后,我将尝试在此处替换声明中的租户 ID 值:

public static ClaimsIdentity SetTenant(int tenantID)
    {
        var claims = HttpContext.Current.GetOwinContext().Authentication.User.Claims;
        var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

        if (identity.FindFirst("tenantid") != null)
        {
            identity.RemoveClaim(identity.FindFirst("tenantid"));
        }
        identity.AddClaim(new Claim("tenantid", tenantID.ToString()));


        System.Web.HttpContext.Current.Items["TenantID"] = tenantID;

        return identity;
}

我在这一行遇到了以下异常

var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

不知道为什么要在这里建立 SQL 连接。

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 oauth oauth-2.0


    【解决方案1】:

    这似乎工作:

            var cp = HttpContext.Current.User;
            var identity = new ClaimsIdentity(cp.Identity);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多