0

現在、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;
        }
    }
4

2 に答える 2

0

私があなたの質問を理解した場合: モデルのリポジトリへのアクセスを提供するよりも、アクション内でモデルを更新する方がよいでしょう。いくつかの基本モデルがあり、ほぼすべてのリクエストでいくつかのプロパティを入力したいが、コードをコピーして貼り付けたくない場合は、このプロパティを設定するアクション フィルターを使用できます。この場合、モデル クラスにロジックを含める必要はありません。このようなもの

于 2012-11-05T23:54:00.817 に答える
0

プロパティのアクセス レベルを protected から public に変更します。保護されたメソッドとプロパティは、クラスとその祖先によってのみ表示されます。

于 2012-11-05T23:36:22.493 に答える