WebAPIプロジェクトでは、ユーザーに対してWindows認証を使用する必要がありますが、ルート上のAuthorize属性に対してカスタムロールプロバイダを実装する必要があります。しかし、私はそれを実装するとき、私はいつも{"メッセージ": "この要求に対して承認が拒否されました"}という結果になりました。さらに、私のブレークポイントのどれもこれまでのカスタムロールプロバイダWeb 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);
}
のWebコンフィグ
<authentication mode="Windows"/>
<roleManager cacheRolesInCookie="false"
defaultProvider="CustomRoleProvider"
enabled="true">
<providers>
<clear />
<add name="CustomRoleProvider"
type="Data.CustomRoleProvider, Data" />
</providers>
のコンストラクタの1を除いてトリガしません
パズルのどの部分が欠落していますか?私は現在のユーザーにリクエストを行い、データベースに適切な役割があるかどうかを確認する必要があります。
おかげデフォルトで