我有一个解决方案,分为3个项目。
其中两个是使用ASP.Net身份提供者的MVC 5 web应用程序。
一个是类库,它由其他项目引用。所有的残渣行动都发生在这里。
所有项目指向相同的DB并通过EF操作。
所有业务逻辑都发生在类库中,但与用户无关。用户验证只在web应用程序中进行。这里的问题是用户验证代码在所有web项目中重复,类库不知道用户调用API。
这种架构很快就会带来维护噩梦,所以我只想让类库与db进行业务逻辑或用户验证。
现在,由于ASP.Net身份提供程序在类库中不工作,有人找到了绕过它的方法吗?
发布于 2014-03-12 13:01:31
我不知道你所指的“维护噩梦”指的是web应用程序中的安全性。将应用程序域与安全模型分离是一件好事。您的域模型和业务逻辑在某些web应用程序中可能保持不变,但安全性模型可能有所不同。我不会把这些绑在一起的。如果它在类库中,那么如何让OWIN安全框架为您处理表单身份验证。您是否也将在类库中管理所有这些。
当您提到“用户验证”时,我假设您是在谈论授权。如果必须在类库中执行授权,我将实现一个自定义ClaimsAuthorizationManager。您将重写CheckAccess方法以执行授权。ClaimsAuthorizationManager是在您的web.config中配置的,因此您可以为不同的web应用程序配置不同的ClaimsAuthorizationManager。但是类库中的逻辑将保持不变。在执行要插入的操作之前,您希望授权用户的任何地方:
ClaimsPrincipalPermission.CheckAccess("MyResource", "MyAction");传递的资源和操作将在您创建的自定义ClaimsAuthorizationManager中使用,以了解正在进行授权的上下文。我谈到了在本文中,将您的安全模型与应用程序域分离开来。的这种方法。如果授权失败,将引发SecurityException。在适当处理web应用程序(在控制器中重定向或Web APi的HTTP未经授权的错误中)时,您会让这种情况扩散到Web应用程序。请注意,如果您也在非web应用程序中使用类库,则此体系结构将工作。我已经在ASP.NET标识中使用了这个,并且它运行得很好。
https://stackoverflow.com/questions/22265951
复制相似问题