.net架构:在解决方案中实现asp.net身份作为单独的项目



我有一个自定义MVC 5解决方案,分为3个主要项目,Data, AdminPublic。我需要添加。net Identity及其相关实用程序。我已经阅读了展示如何将其添加到现有MVC项目的文章,我认为我可以处理它(基本上添加依赖项/文件)。

我的问题是:
  1. 添加Security项目并将相关的身份材料放在那里并参考Admin/Web项目是否有意义?
  2. 或者它应该驻留在数据项目,因为它已经被引用和处理数据?

无论如何,如何跨两个站点实现Identity ?身份将被修改,以包括有关用户的额外信息,所以它可能有意义的一部分,Data项目…?

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

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

当我构建这样的应用程序时,我通常使用依赖注入,并有一个定义我的服务的项目,称之为Core(也许在你的情况下是Data?)在这个项目中,我通常会创建一个ISecurityService接口,它定义获取登录用户所需的方法:

public interface ISecurityService {
  string GetCurrentUserName();
}

你可能想要返回的不仅仅是字符串、对象等。然后在定义asp.net Identity功能的asp.net项目中,我只需创建一个实现ISecurityService的ASPNetSecurityService,并将其连接到我的IOC/依赖注入系统中。这样,任何需要获取此信息的类都可以请求对ISecurityService的引用,IOC系统将为它们提供注册的ASPNetSecurityService。

或者你可以使用同样的技术,如果你想把ASP.net放在一个单独的项目中,但是通过使用这个DI技术,你可以在ASP.net mvc中保留Identity的东西,但仍然可以在任何你喜欢的地方使用该功能。

这有帮助吗?

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

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

您可以使用NuGet Package Explorer创建自己的NuGet包:https://npe.codeplex.com/

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

  • NuGet Packages:

    • ASP。网络身份核心
    • ASP。Net Identity Owin
    • ASP。网络身份实体框架
    • Microsoft.Owin.Host.SystemWeb
    • Microsoft.Owin.Security.Facebook
    • Microsoft.Owin.Security.Google
    • Microsoft.Owin.Security.MicrosoftAccount
    • Microsoft.Owin.Security.Twitter
  • 添加引用:

    • 系统。配置
    • 系统。Web
    • System.Web.Helpers

希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新