我有一个 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/