2013-12-19 4 views
3

사이드 노트 : vs2013 express를 사용하고 있으며 다른 것은 설치하지 않았습니다.Membership.GetAllUsers()를 사용할 때 사용자를 추가하고 역할에 할당했습니다. 아무 것도 반환하지 않습니다.

나는 다음과 같은 인증/권한 부여 목표와 함께 인트라넷 사이트 건물입니다 : 역할 클래스

  • 에서 로깅을위한 필요 없음을 사용

  • 나는이 다음 한

    <authentication mode="Windows"></authentication> 
    
    <authorization> 
        <deny users="?" /> 
    </authorization> 
    
    <roleManager enabled="true" defaultProvider="SqlRoleManager"> 
        <providers> 
        <clear/> 
    
        <add name="SqlRoleManager" 
         type="System.Web.Security.SqlRoleProvider" 
         connectionStringName="EFDbContext" 
         applicationName="TEST" /> 
    
        </providers> 
    </roleManager> 
    
    <membership defaultProvider="SqlProvider" 
        userIsOnlineTimeWindow="15"> 
        <providers> 
        <add 
         name="SqlProvider" 
         type="System.Web.Security.SqlMembershipProvider" 
         connectionStringName="EFDbContext" 
         applicationName="TEST" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="true" 
         requiresUniqueEmail="false" 
         passwordFormat="Hashed" 
         maxInvalidPasswordAttempts="5" 
         passwordAttemptWindow="10" /> 
        </providers> 
    </membership> 
    
    : 내가 Membership.GetAllUsers()를 사용할 때 사용자 및 역할에 그를 할당이 없음

    의 Web.config 비트를 반환

     if(!Roles.RoleExists("Admin")) 
         { 
          Roles.CreateRole("Admin"); 
          Roles.AddUserToRole(@"JIMMYT1988\jimmyt1988", "Admin"); 
         } 
    

    사용자와 내가 관리자에 대한 액세스를 차단하면 내가하지 않고 사용자를 만든 경우 반면 역할은 .. 내가 허용이기 때문에 노력하고 있습니다 :

    나는이 같은 Global.asax에 내 첫 번째 사용자를 추가 그 역할을 추가하면, 그는 접근이 허용되지 않았습니다 ... 그래서 그것은 모두 잘되고 일합니다.

    날 관리자의 역할에 대한 액세스를 차단 : 제대로 작동

    [Authorize(Roles = "Admin")] 
    public class UserController : Controller 
    { 
        private IUserRepository repository; 
    
        public UserController(IUserRepository repo) 
        { 
         repository = repo; 
        } 
    
        public PartialViewResult List() 
        { 
         IEnumerable<User> users = repository.Users; 
    
         UserListViewModel viewModel = new UserListViewModel(); 
         viewModel.Users = users; 
         viewModel.TotalUsers = Membership.GetNumberOfUsersOnline().ToString(); 
    
         return PartialView(viewModel); 
        } 
    } 
    

    그래서 나는 사용자와 관리자의 역할을 가정하고 있는데이 데이터베이스에 entires을 볼 수 있습니다 ... 위의 컨트롤러 특히 membershipprovider 사용자에 대한 추상 -> 구체적인 매핑의 일부입니다 ...하지만 GetAllUsers 줄에서 디버깅하고 실제로 빈 목록을 반환합니다, 그것은 잘못된 매핑이 아니에요.

    마지막으로 나는이 전화 : 더 사용자를 반환하지

      MembershipUserCollection users = Membership.GetAllUsers(); 
    

    합니다.

    아이디어가 있으십니까?

    MembershipUser newUser = Membership.CreateUser(@"JIMMYT1988\jimmyt1988", "password"); 
    

    을 그리고 당신은 역할에 해당 사용자를 추가 할 수 있습니다

    enter image description here

    +1

    왜이 질문이 아래로 투표를해야합니까? 더 많은 정보를 추가 할 수 있습니까? 나는 C# 등에서 꽤 새로운 사람이다. – Jimmyt1988

    +0

    사용자 "JIMMYT1988 \ jimmyt1988"이 존재 하는가? – alexmac

    +0

    나는 OP가 실제로 존재한다는 가정을 한 이유를 더 자세히 설명했다. – Jimmyt1988

    답변

    0

    먼저 당신이 정적 Membership.CreateUser method를 사용하여 사용자를 생성해야합니다.나는 암호가 필요하지 않는 사용자를 만드는 방법에 대해 가서 아직 여전히 사용자를 나열 할 수있을 어떻게

    : 귀하의 코멘트에 대해서는

    ?

    나는 긍정적 인 아니에요,하지만 난 당신이 암호의 "0"이 "필요한 길이를"가지고 Membership 속성을 관련 암호를 설정할 수 있다고 생각합니다.

    당신은 당신의 Web.config의 회원 섹션이 추가 할 수 있습니다

    minRequiredPasswordLength="0" 
    
    +0

    minRequiredPasswordLength가 아쉽게도 0으로 작동하지 않았습니다. "추가 정보 : 제공된 비밀번호가 잘못되었습니다. 비밀번호는 기본 제공 업체에 구성된 비밀번호 강도 요구 사항을 준수해야합니다." – Jimmyt1988