如何使用sqldatabase验证mvc中的登录

时间:2015-03-09 09:43:17

标签: asp.net-mvc

  1. 我已经给出了一个任务,我想在mvc中使用数据库验证登录。
  2. 我有一个Role表和另一个表用户表。
  3. 我想首先显示一个登录页面,如果他是管理员,那么他拥有所有权利,如果他是用户,那么他的权利有限。

2 个答案:

答案 0 :(得分:1)

ASP.NET MVC Web应用程序的身份验证,授权和身份相关问题的最完整解决方案是身份2

由于您只需要一个简单的身份验证和授权,因此您的案例可能有点过分,但我强烈建议您尽快开始学习身份2,因为它会在更复杂的场景中为您提供巨大的优势(从社交, 2因素认证,索赔等。)。

检查此article及以下内容:在我看来,这些是学习身份2的最佳方式。

这可能很难理解,你需要超过10分钟,但请相信我:这是一项很好的投资!

答案 1 :(得分:0)

我做了类似这样的事。

  • 我已经给出了一个任务,我想使用数据库验证mvc中的登录。
  • 我有一个Role表和一个User表。
  • 我想首先显示一个登录页面,如果他是管理员,那么他拥有所有权利,如果他是用户,那么他的权利有限。

这是解决方案。我在用户控制器中添加了一个登录视图,并为admin和user声明了会话。

 [HttpPost]
 public ActionResult Login(Models.User user)
 {
        var query = db.Users.Where(q => q.UserName == user.UserName && q.Password == user.Password);

        if (ModelState.IsValid)
        {
            Session["uname"] = user.UserName; 

            if (query.Any())
            {
                if (query.FirstOrDefault().Role.Role1.ToLower() == "admin")
                {
                    Session["admin"] = true; //define admin session here
                    return RedirectToAction("Index", "user");
                }
                else
                {
                    Session["uname"] = true;
                    return RedirectToAction("Details", "user", new { id = qery.FirstOrDefault().Id });
                }
            }
        }

        return View(user);
}

如果有人以用户身份登录,那么他可以查看自己的详细信息并进行编辑。如果有人以 admin 身份登录,那么他可以查看所有用户的详细信息并拥有完全的权限。

 public ActionResult Index()
 {
     var users = db.Users.ToList();
     var session = Session["uname"]; 

     if (Session["admin"] == null) //if admin is null
     {
            return RedirectToAction("Login", "User"); //admin redirected at login page
     }
     else if (Session["admin"] != null) //if admin is not null and its set to admin then 
     {
            return View(users.ToList()); //he can see private data
     }
     else
     {
           //if user is login and he tried to redirected page to user
           //information 
           //for eg:user/details/2
           //then he tried to access private data then
           //for eg :user
           //then this following url will restrict the user
           //andredirect to Logout Page
           return RedirectToAction("About", "Home"); 
     }
}