0

ASP.NET は初めてで、奇妙な問題に直面しています。

私は正常にログインしています (私のログイン部分ビューはUser.Identity.Namewhen Request.isAuthenticatedis true を使用して私のユーザー名を表示しています)、それにもかかわらず、保護されているコントローラーにアクセスしようとすると[Authorize(Roles="Teacher")](私は教師としてログインしています)、彼はほとんど常にリダイレクトしていますログインページに移動します。したがって、ログインしてWebページにアクセスできますが、30秒ほど更新すると、ユーザー名がまだ印刷されていて、まだログに記録されているように見えるため、ログインする必要があります.

何か案は?

4

4 に答える 4

2

ログインに成功した後、認証されたユーザーがどのロールを持っているかを確認します。次の行を HomeController 内の Action メソッドに追加します。例えば:

public void CheckRoles()
{
    foreach (var role in Roles.GetRolesForUser())
    {
        Response.Write(role + "<br/>");
    }

}
于 2012-11-02T02:22:22.517 に答える
0

まず、ユーザーがどのような種類のプリンシパルであるかを把握することから始めてください。

コントローラーで、次の行とブレークポイントを配置します。

var user = User;

ユーザーは現在のプリンシパルを提供し、デバッガーで確認します。このような状況に陥ったのは、フォーム認証が有効になっており、Windows ロール マネージャーがオンになっている可能性があるためです。

プリンシパルが何であるかを確認すると、問題をすばやく特定するのに役立ちます。

于 2012-11-01T19:00:39.457 に答える
0

先生はログイン?そして、教師は役割ですか?このログインしたユーザーは、webpages_UsersInRoles テーブルに適切なレコードが存在しますか?

于 2012-11-06T12:59:28.537 に答える
0

使用している Authorize フィルターは正しいようです。役割のスペルを確認しましたか? 役割が「先生」ではなく「先生」なのかもしれません。安全のために、ロール名の大文字と小文字が同じであることを確認してください。

于 2012-10-31T21:18:16.137 に答える