사용자에 대해 Windows 인증을 사용해야하지만 경로 위에 Authorize 특성에 대한 사용자 지정 역할 공급자를 구현해야하는 WebAPI 프로젝트가 있습니다. 그러나 구현할 때 항상 { "메시지": "이 요청에 대한 승인이 거부되었습니다."}라는 메시지가 내 통화 결과로 나타납니다. 또한 내 중단 점의 누구도 사용자 지정 역할 공급자웹 API에서 Windows 인증이있는 사용자 지정 RoleProvider
컨트롤러
[Authorize(Roles="Administrator")]
[RoutePrefix("api/Constituents")]
public class ConstituentsController : ApiController
{
[Route("Constituents")]
[HttpGet]
public IDataResponse<List<IConstituent>> GetConstituents()
{
return service.GetConstituent();
}
사용자 정의 역할 공급자
public class CustomRoleProvider : RoleProvider
{
public CustomRoleProvider()
{
this.UserRepo = new UserRepository(); //Breakpoint here triggers
this.RoleRepo = new RoleRepository();
}
public override string[] GetRolesForUser(string username)
{
var roles = UserRepo.GetUser(username)?.Roles?.Select(r => r.Name).ToArray();
return roles;
}
public override bool IsUserInRole(string username, string roleName)
{
var user = UserRepo.GetUser(username);
return user.Roles.Select(r => r.Name).Contains(roleName);
}
웹 구성
<authentication mode="Windows"/>
<roleManager cacheRolesInCookie="false"
defaultProvider="CustomRoleProvider"
enabled="true">
<providers>
<clear />
<add name="CustomRoleProvider"
type="Data.CustomRoleProvider, Data" />
</providers>
의 생성자에서 일을 제외하고 발동
나는 어떤 퍼즐 조각을 놓쳤는가? 현재 사용자가 요청을하고 데이터베이스에 적절한 역할이 있는지 확인해야합니다.
감사합니다.