2017-03-22 6 views
0

에서 함수 호출 내가 계정 컨트롤러의 로그인 기능에서이 함수를 호출하고"현재 사용자가 응용 프로그램에 로그인하지 않았습니다!" 서비스에서 서비스

[AbpAuthorize] 
    public int? FindTenancyNameByUserNameOrEmail(string userNameOrEmail) 
    { 
     var qry = (from p in _memberRepository.GetAll() 
        where p.UserName == userNameOrEmail || p.EmailAddress == userNameOrEmail 
        select p).FirstOrDefault(); 
     if (qry != null) 
     { 
      return qry.TenantId; 
     } 
     else 
     { 
      throw new Exception("User not found"); 
     } 
    } 

특정 사용자의 테넌트 ID를 얻을 수있는 간단한 기능을 썼다 오류가 발생했습니다.

나는 오류 다음 얻을
public async Task<JsonResult> Login(LoginViewModel loginModel, string returnUrl = "", string returnUrlHash = "") 
    { 
     var tenancyid = _memberAppService.FindTenancyNameByUserNameOrEmail(loginModel.UsernameOrEmailAddress.Trim()); 
     //bla bla code 
    } 

:

Exception thrown: 'Abp.Authorization.AbpAuthorizationException' in Abp.dll

Additional information: Current user did not login to the application!

답변

0

문제는 사용자가 세입자에 속하지 않는이었다 사용할 수 있습니다.

임차인 ID와 근무 코드를 설정하려면 다음 줄을 사용하십시오.

CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, intTenancyId); 

서비스 방법의 문제는 AbpAuthorize 속성 [AbpAuthorize] 제거이다

1

문제는 당신이 LINQ 쿼리에 기본 제공된 기능을 사용할 수 없습니다로

var qry = (from p in _memberRepository.GetAll() 

.GetAll() 함수는이 오류를 만드는 첫 번째 줄에 있습니다.

대신

var Myvariable = _memberRepository.GetAll().ToList(); 
var qry = (from p in Myvariable where p.UserName == userNameOrEmail || p.EmailAddress == userNameOrEmail select p).FirstOrDefault(); 
1

[AbpAllowAnonymous] 속성을 추가했다.