사용자 지정 멤버 자격 및 역할 공급자에 대한 고유 한 클래스를 개발했습니다.IIS 및 사용자 지정 멤버 자격 공급자 + 사용자 지정 역할 공급자 관련 문제
모든 것이 로컬로 작동합니다. 그럼에도 불구하고 테스트를 위해 IIS에 솔루션을 배포 한 후 로그인 동작이 작동하는 것 같습니다 (최소한 사용자 이름 + 비밀번호의 유효성을 검사하고 사용자가 인증 된 것처럼 보임)하지만
과 같은 주석으로 장식 된 작업에 액세스하려고 할 때[Authorize(Roles="Employee, Admin")]
마치 사용자가 필요한 역할을하지 않은 것처럼 계속 로그인 페이지로 리디렉션됩니다.
로컬에서는 응용 프로그램이 사용자를 확인하고 작업을 실행하기 전에 인증 된 사용자의 역할을 확인하는 데 성공하므로 (즉, 두 클래스 모두 내 메서드가 올바른 것으로 가정합니다) IIS에서 역할 공급자가 제대로 작동하지 않는 것처럼 보입니다 . 누구나 내가 어디에서 잘못 될 수 있는지 또는 내 문제에 대해 어떻게 더 잘 볼 수 있습니까? 내있는 Web.Config에서
: 사전에
<system.web>
(...)
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add name="CustomMembershipProvider" type="MyApplication.Infrastructure.CustomMembershipProvider" connectionStringName="DBEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add name="CustomRoleProvider" type="MyApplication.Infrastructure.CustomRoleProvider" connectionStringName="DBEntities" applicationName="/" />
</providers>
</roleManager>
(...)
</system.web>
감사합니다.
편집 : Aditional Info.
- 난 그냥 내 행동 '말뭉치 주석 중 하나가 단순히 [권한 부여]와 작동하도록 수정. 따라서 인증이 작동하고 문제가 역할 공급자와 관련되어야한다고 생각합니다.
저는 데이터 모델에 Entity Framework를 사용하고 있습니다. 다음과 같이 문자열은 다음과 같습니다 (?)
내가 사용자를 등록하고 DB 연결 및 사용자 지정 멤버 자격 공급자가 제대로 작동하는지 의미가 새로 만든 계정의를 사용하여 로그인 할 수 있었다. {@ str을}
A "@foreach (Roles.GetRolesForUser (User.Identity.Name)에서 문자열 STR)는 로컬 역할을 인쇄하고 배포하면 아무 것도 인쇄되지 않습니다. 내가 가진
연결 문자열이 있습니까? – Fals
역할이 존재하고 사용자가 자신의 역할에 할당되었는지 확인하십시오. –
네, 그냥 두 번 확인했습니다. 로컬로 테스트 할 때 사용하는 DB 인스턴스는 IIS에 배포 할 때 사용되는 것과 동일합니다. 따라서 역할이 존재하고 지역적으로 인정받는다면 문제는 없어야합니다. – user1987392