2012-11-05 5 views
0

현재 내베이스 스테이션에 인증 토큰이 있습니다. 이 때문에 회원 API를 사용하여 내 컨트롤러에서 모든 Repos를 호출해야합니다. 내 모델에서 이러한 repos에 노출되고 싶지만이 토큰이 필요합니다.MVC3에서 인증 토큰을 노출하는 방법

모든 사용자에게 영향을주지 않으면 서 각 요청마다 업데이트 될이 토큰을 설정할 수있는 곳이 있습니까? 내 뷰 모델이 일부 기본 모델에서이 모델에 액세스하고 해당 모델에 repos를 호출 할 수있을 정도로만이 모델을 노출하는 방법이 있습니까?

/// <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; 
     } 
    } 

답변

0

변경 보호에서 대중에게 속성의 액세스 레벨 :

다음은 기본 컨트롤러에 내 현재 코드입니다. 보호 된 메서드와 속성은 클래스에서만 볼 수 있으며 조상입니다.

0

질문을 이해하는 경우 : 모델의 저장소에 대한 액세스를 제공하는 대신 작업 중에 모델을 업데이트하는 것이 좋습니다. 기본 모델이 있고 거의 각 요청에서 일부 속성을 채우고 코드를 복사하지 않으려면이 속성을 설정하는 작업 필터를 사용할 수 있습니다. 이 경우 모델 클래스에 논리를 포함 할 필요가 없습니다. 와 비슷한 것 this

관련 문제