【问题标题】:Dynamic Entity Framework on Web APIWeb API 上的动态实体框架
【发布时间】:2016-04-26 06:28:23
【问题描述】:

我正在使用带有实体框架的 web api 项目,并且我计划将实体框架设为动态的 [在运行时更改连接字符串]

在一个普通的 MVC 应用程序中,我这样做了

public class ApiRepository
{
    public WebApiLabDbEntities dbContext; 
    public ApiRepository()
    {
        string connection_string = (string)(System.Web.HttpContext.Current.Session["Connection"]);
        if (String.IsNullOrEmpty(connection_string))
        {
            dbContext = new WebApiLabDbEntities();
        }
        else
        {
            dbContext = new WebApiLabDbEntities(connection_string);
        }


    }

}

但在 webapi 项目中,我无法在会话对象中设置连接字符串,例如 Session["Connection"]

那么实现相同目标的替代方法是什么? Web api 将使用基于令牌的身份验证,而 auth_token 决定要使用的连接字符串。

【问题讨论】:

  • 听起来你想要的是在 WebAPI 中使用 Session。这个有可能。以此为例stackoverflow.com/questions/9594229/…
  • 我打算阅读 access_token 并基于它构造 connection_string 并将其保存在某个地方,例如会话或附加到请求 [不知道是否可能],然后从会话或请求访问对象

标签: c# asp.net-web-api entity-framework-4


【解决方案1】:

如果您的连接字符串取决于经过身份验证的用户,那么您应该根据当前用户声明应用您的逻辑(例如,使用 Thread.CurrentPrincipal as ClaimsPrincipal 并阅读已发布的声明)。

当然,这意味着您应该发出一个声明,让您的身份识别不同的连接字符串。

这是一个董事会主题,很大程度上取决于您在幕后使用什么样的身份验证、授权和身份框架,但这篇文章可能会引导您朝着正确的方向前进:ASP.NET Web API Claims Authorization with ASP.NET Identity 2.1 – Part 5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2020-09-24
    • 2013-04-05
    相关资源
    最近更新 更多