asp.net-mvc-3 - ASP.NET MVC 3 限制 API 访问

标签 asp.net-mvc-3 security api servicestack

我有一个 ASP.NET MVC 3 应用程序,带有提供数据的自托管 ServiceStack API。在 Web.Config 中添加 API 位置路径后,该 API 可由我的代码调用并且运行良好:

<location path="api">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

我遇到的问题是,当应用程序运行时,可以通过浏览器访问 API - 我只需在浏览器中输入 http:\localhost:xxxx\api 即可。有什么好方法可以限制对我的自托管 API 的访问,以便我可以继续在 MVC 3 应用程序中调用它,但阻止用户通过浏览器访问 API?

请注意,在未来的某个时候,我将希望公开 API 的某些区域,以便公开访问它们。

最佳答案

注意:Authorization and Authentication支持内置ServiceStack与 ASP.NET 的身份验证独立且解耦。

您通常可以通过继承包含以下一项或多项的基类来限制对所有服务的访问:

  • [身份验证] - 仅允许经过身份验证的用户访问
  • [RequiredRole] - 仅允许具有指定角色的用户访问
  • [RequiredPermission] - 仅允许具有指定权限的用户访问

注意:这些属性也适用于继承自 ServiceStackController 的 MVC Controller 。或标有 [ExecuteServiceStackFilters] 的 Controller 属性。

您可以在 Social Bootstrap Api 中检查使用这些属性的 MVC + ServiceStack 演示。示例项目。

一般限制访问的另一种方法是注册全局 Request filter每个请求都会执行。

关于asp.net-mvc-3 - ASP.NET MVC 3 限制 API 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10533018/

相关文章:

c# - ViewModel 更新 - 保存前更改属性

java - 是否可以在 Servlet 中使用 char[] 而不是字符串来存储密码?

macos - 从 XPC bundle 中检索沙箱权利

php - 隐藏标题发布数据

asp.net-mvc-3 - 将模型数据从 Knockout 发送回 MVC 3

asp.net-mvc - 何时在约定优于配置中添加新文件夹?

html - 禁用 Safari 自动填充用户名和密码

python - 将 API 请求附加到另一个字典

api - 如何使用 Google Embed API 格式化数字 - 小数位限制 - 整数

jquery - MVC3 Ajax/JS 文件的快速和肮脏的解释,请 :)