現在、Base Controller に認証トークンがあります。これとメンバーシップ API を使用しているため、コントローラーですべてのリポジトリを呼び出す必要があります。モデルでこれらのリポジトリを公開したいのですが、このトークンを利用できるようにする必要があります。
すべてのユーザーに影響を与えることなく、リクエストごとに更新されるこのトークンを設定できる場所はありますか? ビューモデルがいくつかの基本モデルでこれにアクセスし、それでリポジトリを呼び出すことができるように、これを公開する方法はありますか?
Base Controller の現在のコードは次のとおりです。
/// <summary>
/// Provide authentication credentials for the current user.
/// </summary>
protected IToken AuthenticatedUserToken
{
get
{
var userCred = (UsersCredential) this.Session [GlobalContext.UserCredentialsSessionKey];
if ( userCred != null )
{
return userCred.UsersToken;
}
if (Request.IsAuthenticated)
{
var name = HttpContext.User.Identity.Name;
var repository = new UserRepository(GlobalContext.ProvisioningApiServiceBase,
GlobalContext.WebServiceUserAuthenticationToken);
var usersCredential = new UsersCredential
{
UsersName = name,
UsersToken =
repository.GetAuthenticationTokenForAuthenticatedUser(name)
};
Session[GlobalContext.UserCredentialsSessionKey] = usersCredential;
return usersCredential.UsersToken;
}
return null;
}
}
protected RepositoryCollection _Repositories { get; set; }
protected RepositoryCollection Repositories
{
get
{
if (_Repositories == null)
{
_Repositories = new RepositoryCollection(this.AuthenticatedUserToken);
}
return _Repositories;
}
}