MVC根据用户登录显示数据

时间:2017-11-06 07:11:16

标签: asp.net-mvc

我有这个表显示userID + SubjectID的列表,现在我想要的是,如果登录的用户只能看到属于当前用户的Subject列表,是否可以?那么我应该使用asp.net身份吗?目前我只使用自定义登录身份验证+角色的空模板,任何想法是什么是处理这种类型的场景的最佳方法?我想要的是我的表格将根据当前登录的用户显示数据。

示例:如果User1已登录,则User1只会看到属于user1的主题..

注意: 我正在搜索基于当前用户登录显示数据的教程,但我找不到,任何人都有更好的想法?或链接可以与我分享?我不知道我的场景中哪个更好的词我只是称之为“根据当前用户显示数据”,如果有人能解决这个问题,我很感激..谢谢提前..

表格控制器:

[CostumAuthorize(Roles = "Admin,Teacher")]
    public ActionResult Subject_List(int id)
    {
        var test = db.SubjectTeachers.Where(x => x.Users.Any(n => n.UserID == id)).ToList();
        var subjectTeachers = db.SubjectTeachers.Include(s => s.Levels).Include(s => s.Subjects).Include(s => s.Users).Where(u => u.LevelID == id);
        return View(subjectTeachers.ToList());


    }

帐户管理员:

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Login(Login l, string ReturnUrl = "")
    {



        if (!ModelState.IsValid)
        {
            return View(l);
        }
        using (MyContext dc = new MyContext())
        {
            var user = dc.Users.Where(a => a.Username.Equals(l.Username) && a.Password.Equals(l.Password)).FirstOrDefault();
            if (user != null)
            {
                FormsAuthentication.SetAuthCookie(user.Username, l.RememberMe);
                if (Url.IsLocalUrl(ReturnUrl))
                {
                    return Redirect(ReturnUrl);
                }


                return RedirectToAction("Index", "Home");

            }

        }

        ModelState.AddModelError("", "Invalid Login.");
        return View(l);
}


    [Authorize]
    public ActionResult Logout()
    {
        FormsAuthentication.SignOut();
        return RedirectToAction("Login", "Account");
    }
}

1 个答案:

答案 0 :(得分:1)

如果您可以获取登录的用户ID,那么只需使用它来获取对应的主题列表.........

int userid = Membership.GetUser(User.Identity.Name).ProviderUserKey;
[CostumAuthorize(Roles = "Admin,Teacher")]
public ActionResult Subject_List()
{
   var test = db.SubjectTeachers.Where(x => x.Users.Any(n => n.UserID == userid )).ToList();
   return View(test.ToList());
}