我使用Entity Framework进行基于登录身份验证的asp.net MVC 4应用程序。在这里,用户可以自己注册并在应用程序中添加自己的记录。
因此,每当他们登录时,他们应该只看到自己的记录,而不是其他人。想根据当前登录的用户过滤记录。
我们可以在不影响性能的情况下采取任何简单的方法吗?是否有可能在一个地方处理这种情况?
用户ID值
1 1测试值1
2 2测试值2
2 3测试值3
1 4 XYZABC
此外,需要通过查看按网址命中来限制用户2 例如: 用户2不应查看http://wesite.com/Details/1和http://wesite.com/Details/4,反之亦然。
答案 0 :(得分:2)
您可以尝试使用要添加到该用户的任何自定义属性创建继承自IdentityUser的ApplicationUser类:
public class ApplicationUser : IdentityUser
{
public int CustomProperty { get; set; }
...
}
然后将ApplicationUser传递给dbcontext:
public class YourDbContext : IdentityDbContext<ApplicationUser>
当您想要获取特定用户的数据时,只需获取登录用户的身份:
var userId = User.Identity.GetUserId();
_dbContext.YourTable.Where(x => x.UserId = userId);
这样您就不必限制特定ID的路由,只需使用当前登录用户的ID即可获取所需数据。