これはMVC 3プロジェクトです。テストのためだけに、私はRoleProviderを動作させるには?
public class MyRoleProvider : RoleProvider
{
public override string[] GetRolesForUser(string username)
{
return new string[] { "0", "1", "2", "4" };
}
public override bool IsUserInRole(string username, string roleName)
{
bool result = true;
return result;
}
私はweb.configに登録します。そして、標準のSqlMemberShipProviderを設定すると、次のようなものがGetRolesForUserを起動させます。
[Authorize(Roles="4")]
public class AdminController : Controller
{ //...
ただし、標準のSqlMemberShipProviderは使用しません。次のように私はちょうどテストに、自分のAuthorizeAttributeによって定義された:
public class MyAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool result = true;
return result;
return base.AuthorizeCore(httpContext);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
}
}
さて、以下はもう発射するMyRoleProvider.GetRolesForUserが発生することはありません。
[MyAuthorize(Roles="4")]
public class AdminController : Controller
{ //...
上記MyAuthorize.AuthorizeCoreとMyAuthorize.OnAuthorizationなくMyRoleProviderのメソッドをトリガします。 MemberShipProviderとRoleProviderとAuthorizedAttributeの関係は何ですか?これらの関係はいつ定義または構成されますか?
ありがとうございました。
元の投稿を削除します。 テスト中に間違いを犯したことがあります。 私はもう一度やり直して、MyAuthorize属性を使用していてもMyRoleProviderが呼び出されることを確認します。 回答したすべての方に感謝します –