我有这个表显示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");
}
}
答案 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());
}