小编Art*_*bes的帖子

将身份用户传递给服务

我们正在开发一个 Web 应用程序,用户可以在其中注册订单、客户等,然后进行查看。我们有 MVC 控制器使用的服务,以便与 Web UI 交互。

现在我们面临多个用户的问题:每个服务都应该提供当前授权的用户 ID,所以所有操作(CRUD 和业务逻辑)都将只允许该用户 ID。应该怎么通过?

我正在考虑将一个参数传递给我的IDataService(服务的基类),该参数由 实例化WhateverController,后者又可以访问该User.Identity.GetUserId()方法,但是当我使用 IoC 容器(Ninject)时,我不知道如何去做。我想这IDataService需要对 a 的引用IUserInfoProvider,因此它可以调用IUserInfoProvider.GetUserId(). 然后我可以以某种方式注入一个基于 Identity 的实现并拥有当前的 Web 上下文信息,几乎与必须实例化控制器的方式相同。

问题是:如何获取这些数据?

当然,一个更简单的解决方案是在每个 Controller 构造函数中手动完成,但应该有更自动和更优雅的方法来解决这个问题。

编辑:经过更多的研究,感谢 Cuong Le 的回答,我不得不问的问题实际上是“如何从当前上下文注入 UserManager?”。

但是,为了将我的服务层与 MVC 分离,我创建了一个IUserInfoProvider,它提供对经过身份验证的用户数据的访问。基于 Identity 和 UserManager 的实现位于 Web UI (MVC) 项目中,因此它具有IPrincipalCuong Le 的建议,以及ApplicationUserManager,,都使用 Ninject 注入。

以下接口从 Identity 和 UserManager 中抽象出用户信息。

public interface IUserInfoProvider<T>
{
    string GetUserId();
    T GetUserData();
}
Run Code Online (Sandbox Code Playgroud)

下面是使用 …

c# asp.net-mvc asp.net-identity

2
推荐指数
1
解决办法
2763
查看次数

标签 统计

asp.net-identity ×1

asp.net-mvc ×1

c# ×1