【发布时间】:2016-10-26 09:36:08
【问题描述】:
我有一个使用 Windows 身份验证的 ASP.NET MVC5 CRUD 应用程序,并且该站点由 Active Directory 组保护,该组中的所有成员都具有相同的权限。我正在使用 Entity Framework 6 来访问数据库。
我目前有一个非常基本的User 模型,其中Login 将是DOMAIN\username。我所有的模型都通过CreatedByUserId 属性引用了这个模型,我在下面省略了与其他模型的关系。
public class User
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Index(IsUnique = true)]
[MaxLength(100)]
public string Login { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime CreatedDatetime { get; set; }
}
我希望能够实现两件事,尽管我不确定如何在所有控制器中不重复代码:
- 通过 Active Directory 组进行身份验证的用户会创建一个用户模型并将其存储在数据库中(如果该模型尚不存在)。
- 创建新项目时,
CreatedByUserId将填充有执行操作的User的Id。
我相信第一部分可以通过全局 AuthorizeAttribute 过滤器来实现未来参考。
第二部分我不确定,我相信可以做到这一点,而不必根据当前用户继续查询数据库。是否可以通过构造函数使用User 访问站点时检索到的Id 设置此值?
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework authorization