2012-11-11 19 views
1

我想在ASP.NET MVC應用程序中使用DotNetOpenAuth與LinkedIn API進行交互。爲了從我的數據庫中持久存取令牌,我需要在我的服務層中實現IConsumerTokenManager。目前我正在檢索令牌祕密訪問令牌(不是請求令牌)是這樣的:在DotNetOpenAuth中實現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

你應該根據傳入的令牌來查找祕密。不是登錄的用戶名。在數據庫中爲該列設置的索引應該快速查找。無論如何,我懷疑你目前使用的用戶名查找方式不會更快。