我们将为“台式/移动响应网站”和“移动应用”启动一个新的解决方案。两个项目(网站和移动应用程序)都需要访问相同的业务/数据层。
网站的层结构将类似于以下内容:
浏览器-> ASP.NET MVC网站->业务层->数据层->数据库
移动应用的层级结构将如下所示:
智能设备-> ASP.NET Web Api服务层->业务层->数据层->数据库
我们不希望网站使用Web API。
在我们的方案中,我们也不需要与任何社交身份集成。我听说ASP.NET MVC不鼓励使用令牌方法进行安全性(身份验证和授权),并鼓励使用cookie方法。但是,如果我们采用令牌方法,并且在REST服务中明显不鼓励使用cookie,则使用Web Api会容易得多。
虽然可以从新的ASP.NET Identity系统开始,但我们不确定如何在不重写和不支持两种情况的代码的情况下处理两种情况。
基于上述理由,我们如何设计一种适用于我们两种方案(即ASP.NET MVC网站和ASP.NET Web API)的通用安全模式。
如果使用OWIN自托管,则可以考虑创建OWIN中间件。如果您使用IIS进行网络托管,则可以创建一个Http模块来进行身份验证,并通过处理authenticate事件来建立身份。可以以这种方式编写Http模块以查找令牌,如果不存在,则返回cookie。通过MVC的cookie方法,我相信您的意思是表单身份验证。这样,FormsAuthenticationModule就起作用了。因此,您的模块只需要意识到这一点并进行良好的配合即可。最终,身份是在Http上下文中建立的,您可以Authorize
在MVC和API控制器中使用属性。这是一个如何创建用于身份验证的Http模块的示例。在此实现了基本身份验证,但是您可以为令牌修改它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句