C# .Net体系结构:将asp.Net标识作为解决方案内的独立项目实现

C# .Net体系结构:将asp.Net标识作为解决方案内的独立项目实现,c#,asp.net,asp.net-identity,asp.net-mvc-5.2,C#,Asp.net,Asp.net Identity,Asp.net Mvc 5.2,我有一个自定义MVC 5解决方案,分为3个主要项目,数据,管理,和公共。 我需要添加.NET标识及其相关实用程序。 我读过一些文章,展示了如何将它添加到现有的MVC项目中,我认为我可以处理这个问题(基本上是添加依赖项/文件) 我的问题是: 添加一个安全性项目,并将相关的身份信息和管理员/网站项目的参考信息放在其中,这样做有意义吗 或者它应该驻留在数据项目中,因为它已经被引用并处理数据了 无论哪种方式,如何在两个站点之间实现标识?身份将被修改,以包含有关用户的额外信息,因此作为数据项目的一部分可能

我有一个自定义MVC 5解决方案,分为3个主要项目,
数据
管理
,和
公共
。 我需要添加.NET标识及其相关实用程序。 我读过一些文章,展示了如何将它添加到现有的MVC项目中,我认为我可以处理这个问题(基本上是添加依赖项/文件)

我的问题是:

  • 添加一个
    安全性
    项目,并将相关的身份信息和
    管理员
    /
    网站
    项目的参考信息放在其中,这样做有意义吗
  • 或者它应该驻留在数据项目中,因为它已经被引用并处理数据了
  • 无论哪种方式,如何在两个站点之间实现标识?身份将被修改,以包含有关用户的额外信息,因此作为
    数据
    项目的一部分可能有意义

    另外,我如何实现标识/安全项目,以便不需要向每个项目添加标识?(建筑是我真正需要帮助的地方)


    基本上,我将如何使用asp.net Identity作为一个单独的项目来实现安全性?

    当我构建这样一个应用程序时,我通常使用依赖项注入,并且有一个定义我的服务的项目称之为核心(可能在您的案例数据中?)。在本项目中,我通常会创建一个ISecurityService接口,该接口定义获取登录用户所需的方法:

    public interface ISecurityService {
      string GetCurrentUserName();
    }
    
    您可能希望返回的不仅仅是字符串、对象等。。然后,在定义asp.net标识功能的asp.net项目中,我只需创建一个实现ISecurityService的AspnetSecurity服务,并将其连接到我的IOC/依赖项注入系统中。这样,任何需要获取此信息的类都可以请求对ISecurityService的引用,IOC系统将为它们提供注册的ASPNetSecurityService

    或者,如果愿意,您可以使用相同的技术并将ASP.net放在单独的项目中,但是通过使用此DI技术,您可以在ASP.net mvc中保留标识内容,但仍然可以在任何您喜欢的地方使用该功能


    这有帮助吗?

    今年我做了类似的事情,效果和我预期的一样。我有ASP.Net的身份作为它自己的一个项目。我的公司也对其进行了定制,以处理有关验证用户的所有业务逻辑/规则。我将其设置为一个NuGet包,并可以将其安装到任何web项目中,以处理对公共用户存储的身份验证。消费应用程序不需要知道任何有关身份验证的详细信息。开发人员只调用提供的方法

    我开始的方式是从默认的MVC模板创建一个项目,并记下identity所需的所有依赖项。然后,我将这些依赖项包括在我的定制NuGet包中

    您可以使用NuGet软件包资源管理器创建自己的NuGet软件包:

    我检查了我的笔记,下面是我写下的所有需要添加到NuGet包中的依赖项(可能我忽略了一个):

    • NuGet软件包:

      • Net身份核心
      • ASP.Net标识Owin
      • ASP.Net标识实体框架
      • Microsoft.Owin.Host.SystemWeb
      • Microsoft.Owin.Security.Facebook
      • Microsoft.Owin.Security.Google
      • Microsoft.Owin.Security.MicrosoftAccount
      • Microsoft.Owin.Security.Twitter
    • 添加参考:

      • 系统配置
      • 系统.Web
      • System.Web.Helpers
    希望这有帮助