在我看来,这不是How to get current user in Asp.Net MVC的重复。
我试图找出如何以易于单元测试的方式从ASP.NET MVC模型访问当前用户。这些模型是由SqlMetal生成的LINQ to SQL实体。
我认为我需要了解模型中的当前用户的原因是因为我想根据该用户的权限限制对某些属性/方法的访问。
我愿意采用替代设计,并以干净,单元测试友好的方式进行必要的更改。
答案 0 :(得分:5)
管理权限和限制对属性的访问听起来像是控制器的工作。模型single responsibility用于存储数据,而不是了解或管理用户和权限。因此,简而言之,您不需要在模型中获取当前用户。
答案 1 :(得分:2)
我总是为每个控制器实例创建服务类的新实例。鉴于此,您可以简单地将当前用户传递给服务构造函数,以使其可用于模型的其余部分。如果将当前用户公开为服务接口中的属性,则可以轻松地将其模拟出来进行测试。
答案 2 :(得分:0)
我将使用GetUser方法定义IUserService接口,该方法将返回用户对象,然后为实际应用程序定义两个实现,为测试场景定义一个实现。