【问题标题】:Implementing IConsumerTokenManager in DotNetOpenAuth在 DotNetOpenAuth 中实现 IConsumerTokenManager
【发布时间】:2012-11-11 04:59:32
【问题描述】:

我正在尝试在我的 ASP.NET MVC 应用程序中使用 DotNetOpenAuth 与 LinkedIn API 进行交互。要在我的数据库中保存和检索令牌,我需要在我的服务层中实现 IConsumerTokenManager。目前我正在检索访问令牌(不是请求令牌)的令牌机密,如下所示:

public string GetTokenSecret(string token)
{
    // Retrieves token secret from database based on the user's username
    string tokenSecret = _db.LinkedInAccounts.GetTokenSecret(HttpContext.Current.User.Identity.Name);
    return tokenSecret;
}

这感觉很脏,因为我不得不在我的服务层中引用 System.Web 和 HttpContext。我真的不想这样做,但我无法确定另一种检索访问令牌的方法。我可以像这样使用访问令牌检索它:

string tokenSecret = _db.LinkedInAccounts.GetTokenSecret(token);

但我不确定访问令牌是否是唯一的,以及当存储了数千个访问令牌时这将如何影响数据库性能。

这是第二种方式,还是有更好的选择?我真的不想在我的服务层中引用 System.Web。

谢谢!

更新:如果有人遇到类似问题,我最终使用 Ninject 将用户名作为构造函数参数注入到 IConsumerTokenManager 的实现中。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 dotnetopenauth


    【解决方案1】:

    您应该根据传入的令牌查找秘密。不是登录的用户名。在数据库中为该列设置的索引应该可以加快查找速度。我怀疑您当前按用户名查找不会更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2013-07-18
      • 2014-08-06
      • 1970-01-01
      相关资源
      最近更新 更多