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