我正在尝试在我的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实现中。
答案 0 :(得分:0)
您应该根据传入的令牌查找秘密。不是登录用户名。为数据库中的该列设置索引应该可以快速查找。我怀疑你当前通过用户名查找的速度不会更快。