我有一个自定义MVC 5解决方案,分为3个主要项目,Data
, Admin
和Public
。我需要添加。net Identity及其相关实用程序。我已经阅读了展示如何将其添加到现有MVC项目的文章,我认为我可以处理它(基本上添加依赖项/文件)。
- 添加
Security
项目并将相关的身份材料放在那里并参考Admin
/Web
项目是否有意义? - 或者它应该驻留在数据项目,因为它已经被引用和处理数据?
无论如何,如何跨两个站点实现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
希望这对你有帮助!