asp.net-mvc – 如何使WebAPI操作只能从我的应用程序访问?
WebAPI的常见用例将是由MVC控制器呈现的视图,其中包含
JavaScript,然后打开您的API来访问数据.
但是假设您有一些昂贵的API操作,并且您不希望人们远程访问这些端点 – 您只希望应用程序提供的MVC视图来访问它们.你怎么去保护他们? 在这种情况下,Request.IsLocal不起作用,因为javascript正在其机器上的客户端浏览器中调用它.即使它工作,你需要挖掘来获得真正的HttpContext,以便找到这个属性 – 而且这个解决方案将不能在自我托管的WebAPI中运行. 对于需要有效IPrincipal的API端点,您可以使用[Authorize]属性来保护它们.但是,您希望您的应用程序能够访问匿名用户的API端点呢? 我已经尝试了一个解决方案,并将其作为答案分开发布,因为我不知道它是否是最好的(甚至是好的)方法. 解决方法
如果您的MVC站点使用身份验证,则可以为Web API方法启用表单身份验证.您可以编写一个自定义[Authorize]属性,该属性将检查是否存在将从AJAX调用发送的表单验证cookie,如果存在则构造主体.
另一个可能的解决方案是使用更加REST风格的 另一方面,如果您的网站不使用身份验证,则会因为您使用JavaScript调用API方法而无法知道请求是否来自受信任的客户端,所以会变得非常复杂. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 通过ASP.NET Web API + JQuery创建一个简单的Web应用
- ASP.NET MVC5 OWIN:通过Facebook登录后,为什么User.Identi
- 看美剧英文字幕学英语的利器——“深蓝英文
- 新单词 part 15
- .net4.0中的ClientIDMode
- asp.net – 更改MVC帐户数据库中的DefaultConnection
- asp.net – 如何确定HttpModules的执行顺序?
- ASP.net角色和项目
- 实体框架 – EF 6 Code First迁移警告或阻止破坏性更新
- asp.net-web-api – 如何使用web api和模型绑定定义xml属性
- 逗号之后拆分字符串直到字符串结束 – asp.net c
- asp.net-mvc – 我应该把我的控制器业务逻辑放在
- asp.net-core – 从与xproj相同的解决方案引用cs
- asp.net-mvc – System.Web.Optimization.Bundle
- 以编程方式为SqlDataSource设置ASP.NET参数不适用
- asp.net-mvc – 使用Ajax在ASP.NET MVC的Kendo U
- asp.net – 禁用按钮但看起来很活跃
- asp.net-core – 如何在.Net Core应用程序中读取
- asp.net-mvc – 从Visual Studio 2015中完全删除
- asp.net-mvc – 在MVC3或MVC4中检查项目构建