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-ajax – 如何在ASP.NET AJAX中实现文件下载
- asp.net-mvc-3 – 绑定到MVC3中的DropDownList
- ASP.net vnext依赖注入
- asp.net文件下载 – 跟踪下载的大小
- ASP.NET MVC捆绑缓存. (检测css文件更改)(内部行为)
- asp.net-mvc – ASP.NET MVC 3中的OutputCache行为
- asp.net-mvc – 为什么ASP.Net MVC便携式区域不像Rails插件
- asp.net – 映射到用户的SignalR连接
- asp.net – 如何在selectindexchanged下拉列表后避免页面刷
- asp.net-core – 如何使用ASP.NET Core中的JWT授权重定向到
- asp.net核心 – 如何在自己的主机环境中的ASP.NE
- ASP.NET Web API 2:通过本机移动(iOS)应用程序与
- asp.net – 什么原因导致“无法注销UpdatePanel”
- asp.net – Mysql中int(10)的最大大小是多少?
- asp.net – SQL网络接口,错误:26 – 定位服务器
- asp.net-web-api – 从asp.net web api定制odata
- ASP.NET成员资格 – 让用户使用以前的密码
- asp.net – 报表查看器控件(Web)显示空白报告
- asp.net-mvc – 使用存储库模式来支持多个提供程
- asp.net-mvc – {get;组; }在ViewModel中使用
