2

我正在尝试在我的 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 的实现中。

4

1 回答 1

0

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

于 2013-03-05T04:13:07.883 回答