Asp.net mvc 如何为asp.net mvc和asp.net web.api设计和开发通用asp.net标识

Asp.net mvc 如何为asp.net mvc和asp.net web.api设计和开发通用asp.net标识,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我们将为“桌面/移动响应网站”和“移动应用”启动一个新的解决方案。两个项目(网站和移动应用程序)都需要访问相同的业务/数据层 网站的层次结构如下所示: 浏览器->ASP.NET MVC网站->业务层->数据层->数据库 移动应用程序的层次结构如下所示: 智能设备->ASP.NET Web Api服务层->业务层->数据层->数据库 我们不希望网站使用web api 我们也不需要在我们的场景中融入任何社会身份。我听说ASP.NET MVC不鼓励使用令牌方法来实现安全性(身份验证和授权),并鼓励使用

我们将为“桌面/移动响应网站”和“移动应用”启动一个新的解决方案。两个项目(网站和移动应用程序)都需要访问相同的业务/数据层

网站的层次结构如下所示:

浏览器->ASP.NET MVC网站->业务层->数据层->数据库

移动应用程序的层次结构如下所示:

智能设备->ASP.NET Web Api服务层->业务层->数据层->数据库

我们不希望网站使用web api

我们也不需要在我们的场景中融入任何社会身份。我听说ASP.NET MVC不鼓励使用令牌方法来实现安全性(身份验证和授权),并鼓励使用cookie方法。然而,如果我们采用令牌方法,并且显然不鼓励在REST服务中使用cookie,那么使用WebAPI将会容易得多

虽然我们可以从新的ASP.NET标识系统开始,但我们不太确定如何在不重写和支持两种方案的代码的情况下处理这两种方案


基于上述理由,我们如何设计一个适用于我们两种场景的通用安全模式,即ASP.NET MVC网站和ASP.NET Web API。

如果您使用OWIN自托管,您可以考虑创建OWIN中间件。如果您使用IIS作为web主机,则可以创建Http模块进行身份验证,并通过处理身份验证事件来建立身份。Http模块可以这样编写,以查找令牌,如果不存在,则返回cookie。通过MVC的cookie方法,我相信您指的是表单身份验证。这样一来,FormsAuthenticationModule就发挥了作用。因此,您的模块只需要意识到这一点,并很好地配合。最终,身份建立在Http上下文上,您可以在MVC和API控制器中使用
Authorize
属性。是如何创建用于身份验证的Http模块的示例。这里实现了基本身份验证,但您可以对令牌进行修改。

您是否想过创建一个自定义授权筛选器,查看post/url以检查令牌的访问权限?