我的任务是为用户提供基于角色的菜单.....这是我第一次在MVC3上工作,所以期待你的帮助.... 我正在从数据库中找到角色......
所以我有不同的菜单,如[主页],[关于],[项目],[设置],[资源],这样我想要做的是当用户[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;
}
任何人都可以帮我这样做....
答案 0 :(得分:0)
如果您使用内置的Forms身份验证,则可以访问以下用户角色:
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")
,请查看Implementing a Role Provider。