Asp.net web api 企业架构:通过WebAPI的MVC标识

Asp.net web api 企业架构:通过WebAPI的MVC标识,asp.net-web-api,asp.net-mvc-5,entity-framework-6,asp.net-identity-2,Asp.net Web Api,Asp.net Mvc 5,Entity Framework 6,Asp.net Identity 2,这比实际应用更具理论性,但根据我的研究,企业体系结构有很多层,它们对我来说都很有意义,但实际应用这些层是我遇到困难的地方 如果我实现了一个服务层,我是否使用该服务层通过WebAPI执行身份验证和授权?如果是,这是如何工作的?从目前的情况来看,我有一个表示层,它应该调用我的服务层来调用我的控制器服务,该服务将对用户进行身份验证。这是否有效?是否推荐?也许我想得太多了,但如果我在表示层保留身份验证,代码将直接或通过业务层连接到数据库,这意味着应用程序将使用两种方法与数据库通信,我认为这破坏了体系结构

这比实际应用更具理论性,但根据我的研究,企业体系结构有很多层,它们对我来说都很有意义,但实际应用这些层是我遇到困难的地方

如果我实现了一个服务层,我是否使用该服务层通过WebAPI执行身份验证和授权?如果是,这是如何工作的?从目前的情况来看,我有一个表示层,它应该调用我的服务层来调用我的控制器服务,该服务将对用户进行身份验证。这是否有效?是否推荐?也许我想得太多了,但如果我在表示层保留身份验证,代码将直接或通过业务层连接到数据库,这意味着应用程序将使用两种方法与数据库通信,我认为这破坏了体系结构本身的用途

有人遵循这一点并实施过这一点吗

更新:
所以我相信我的问题是错误的。我试图在企业应用程序中实现Microsoft的以下技术,但我似乎很难将它们解耦,以便它们独立工作(单独的程序集):

  • Microsoft ASP.Net MVC 5(Razor视图)
  • Microsoft实体框架6(代码优先+数据库迁移)
  • Microsoft ASP.Net WebAPI服务(尽管我不知道何时使用它们)
  • Microsoft ASP.Net Identity 2.0

我有几个问题。解决方案中的业务层应该包含执行完成任务所需的工作的所有类。如果我没有弄错的话,我的UI层(MVC)应该从控制器调用我的业务层(如果我错了,请纠正我)。我的业务层应该与我的数据访问层通信,我假设它应该包含我的DbContext(如果我错了,请纠正我)。因此,该层还必须包含Identity(NuGet包),以便我的DbContext可以从IdentityDbContext继承(或者它是否需要?)。现在,在我的UI层(MVC)中,我需要允许用户进行身份验证。这就是我被困的地方。我可以创建一个简单的示例,但当我尝试将独立的身份层解耦到我的独立项目(域、数据访问、业务、UI)中时,我遇到了编码器阻塞。

可能的重复不完全相同。我的问题是,我来自一个安全性(身份验证/授权)自产的时代,我们从头开始构建一切。现在我们被告知要使用微软发布的一些令人敬畏的新东西,问题是并非所有的技术都能协同工作,也不容易实现。在一个简单的HelloWorld示例中,它们都很容易实现。当你试图将它们解耦时,当你遇到麻烦时。我想这就是我应该如何表达的问题,我如何将身份与UI(MVC)分离?我对你列出的技术不太熟悉。但一般来说,最佳实践(据我所知)是让用户进行一次身份验证(将请求安全地传递到所有层),然后用不透明的有时间限制的授权令牌替换用户的身份,该令牌可以传递到任何需要某种授权批准的层。搜索
OAuth
协议和
社交登录
。如果你在这里没有得到可接受的答案,你可以尝试将你的问题移动到一些
设计
标签下(“提醒版主注意”)