0

私の仕事は、ロールベースのメニューをユーザーに提供することです.....MVC3で実際に作業するのはこれが初めてなので、あなたの助けを期待しています....データベースからロールを取得しています...

[Home]、[About]、[Projects]、[SetUP]、[Resources] のようなさまざまなメニューがあります。このように、ロール [admin] を持つユーザーがログインしたときに、彼に提供する必要があります。 [Home]、[About]、[SetUP] メニューのみで、これを行うにはどうすればよいですか?簡単にこれを行うのに役立つ人はいますか.....これは私が今まで行ったことです。テーブル内のID....ロールベースを使用しないログインを作成しましたが、ロールベースのログインを提供するにはどうすればよいですか

これは私の LoginModel クラスです

      public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
    public bool IsValid(string _username, string _pwd)
    {

        SqlConnection cn = new SqlConnection("Data Source=LMIT-0039;Initial Catalog=BugTracker;Integrated Security=True");
        cn.Open();
        SqlCommand cmd = new SqlCommand("GetRoleName", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@UserName ", SqlDbType.VarChar).Value = _username;
        cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = _pwd;
        Object TypeUser = cmd.ExecuteScalar();
        cn.Close();
        if (TypeUser != null)
        {
            if (TypeUser.ToString() == "Admin")
                return true;
            else if (TypeUser.ToString() == "Developer")
                return true;
            else if (TypeUser.ToString() == "QA")
                return true;
            else
                return false;
        }
        return true;

    }

誰でもこれを行うのを手伝ってもらえますか....

4

1 に答える 1

0

組み込みのフォーム認証を使用すると、次のようなユーザー ロールにアクセスできます。

string userRole = Roles.GetRolesForUser(User.Identity.Name).FirstOrDefault();

FirstOrDefaultユーザーは複数の役割を持つことができるため、を使用しました。ここからswitchステートメントを使用して、関連するビューを返すことができます。また、項目 (グローバル レイアウトのメニュー項目など) を非表示にする場合は、次のようにします。

@if(Roles.GetRolesForUser(User.Identity.Name).FirstOrDefault() == "TheRoleYouWant")
{
    ...
}

また、コントローラー (またはコントローラー全体) の関数に属性を追加してAuthorize、このロールを持つユーザーのみがアクセスできるようにすることもできます。このような:

[Authorize(Roles = "Admin, Role2, Role3")]
public ActionResult Index()
{
    return View();
}

複数のロールを追加できることに注意してください。上記のようにコンマで区切る必要があります。

IsUserInRole("Admin")など、他にも多くのオプションがあります。ロール プロバイダーの実装をご覧ください。

于 2012-07-10T07:54:57.363 に答える