2

私が構築しているサイトに完全に「ログイン」する前に、特定のユーザーが役割を持っているかどうかを確認しようとしています。通常、私はコードを使用します:

User.IsInRole("CustomRole")

しかし、この状況では、その行は常に「false」になります。これは、User.IsInRole を使用するために、ユーザーがすでに完全にログインしている必要があるためだと思います。アカウントコントローラーの LogOn メソッド内でこの情報を確認しようとしています。 、そのため、ユーザーはまだログインしていません (私は思います)。

以下でやろうとしていることを実行できるように、ユーザーオブジェクトを返すにはどうすればよいですか:

public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

            // Need to identify the user because the "User" is not officially 'logged in' yet and cannot be accessed via "User.IsInRole" - am I correct in this understanding
            MembershipUser u = Membership.GetUser(model.UserName);
            if (u.IsInRole("Administrator"))

. . . . truncated

上記のコードは、次のエラーをスローします。

'System.Web.Security.MembershipUser' does not contain a definition for 'IsInRole' and no extension method 'IsInRole' accepting a first argument of type 'System.Web.Security.MembershipUser' could be found (are you missing a using directive or an assembly reference?)

MembershipUser u = Membership.GetUser(model.UserName) は IsInRole を使用できるオブジェクトを返していないようです。何かヒントはありますか?

4

2 に答える 2

5

あなたが欲しいのは

var authorized = Roles.IsUserInRole(username, roleName);
于 2012-04-20T13:46:32.530 に答える
0

役割とユーザー名の両方を取るオーバーロードがあると思います。MSDN

于 2012-04-20T13:45:41.653 に答える