如何在 ASP.NET MVC 模型中获取当前用户

发布于 2024-10-08 07:48:26 字数 340 浏览 7 评论 0原文

在我看来,这不是如何获取 Asp.Net MVC 中的当前用户

我试图找出如何以易于单元测试的方式从 ASP.NET MVC 模型访问当前用户。这些模型是由 SqlMetal 生成的 LINQ to SQL 实体。

我认为我需要了解模型中的当前用户的原因是因为我想根据该用户的权限限制对某些属性/方法的访问。

我愿意采用替代设计,并进行任何必要的更改,以干净、单元测试友好的方式实现这一点。

In my opinion this is not a duplicate of How to get current user in Asp.Net MVC.

I am trying to figure out how to access the Current User from an ASP.NET MVC Model in a manner that is easy to unit test. The models are LINQ to SQL entities that are generated by SqlMetal.

The reason I think I need to know the Current User in the Model is because I want to restrict access to certain properties / methods based on that user's privileges.

I am open to adopting an alternative design and making whatever changes are necessary to implement this in a clean, unit test friendly manner.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱已欠费 2024-10-15 07:48:26

管理权限和限制对属性的访问听起来像是控制器的工作。该模型的单一职责是存储数据,而不是了解或管理用户和权限。所以,简而言之,您不需要获取模型中的当前用户。

Managing permissions and restricting access to properties sounds like a job for the controller. The model's single responsibility is to store data, not to know about or manage users and permissions. So, in short, you don't need to get the current user in the model.

南冥有猫 2024-10-15 07:48:26

我总是为控制器的每个实例创建服务类的新实例。鉴于此,您可以简单地将当前用户传递给服务构造函数,以使其可供模型的其余部分使用。如果将当前用户公开为服务接口中的属性,则可以轻松模拟它以进行测试。

I've always created new instances of my service classes for each instance of the controller. Given that, you can simply pass in the current user to the service constructor to make it available to the rest of your model. If you expose the current user as a property in your service interfaces, you can easily mock it out for testing.

时光倒影 2024-10-15 07:48:26

我将使用 GetUser 方法定义一个 IUserService 接口,该方法将返回一个用户对象,然后定义两个实现,一个用于实际应用程序,一个用于测试场景。

I would Define a IUserService Interface with a GetUser method that would return a User Object and then define two implementations one for the actual application and one for a test scenario.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文