相关疑难解决方法(0)

如何保护ASP.NET Web API

我想使用ASP.NET Web API 构建RESTful Web服务,第三方开发人员将使用它来访问我的应用程序的数据.

我已经阅读了很多关于OAuth的内容,它似乎是标准的,但找到一个很好的样本,文档解释它是如何工作的(实际上确实有效!)似乎非常困难(特别是对于OAuth的新手).

是否有实际构建和工作的示例,并说明如何实现它?

我已经下载了很多样本​​:

  • DotNetOAuth - 从新手的角度来看,文档是没有希望的
  • Thinktecture - 无法构建它

我还看过一些博客,建议一个简单的基于令牌的方案(像这样) - 这似乎重新发明了轮子,但它确实具有概念上相当简单的优势.

似乎在SO上有很多这样的问题,但没有好的答案.

每个人在这个领域做什么?

c# asp.net-mvc oauth asp.net-web-api

389
推荐指数
5
解决办法
26万
查看次数

MVC Api Action&System.Web.Http.AuthorizeAttribute - 如何获取帖子参数?

我有以下API控制器:

public class TestController : ApiController
{
    [HttpPost]
    [APIAuthorizeAttribute]
    public IQueryable<Computers> ListOfComputersInFolder(Guid folderId)
    {
        return GetListOfComputersForFolder(folderId);
    } // End of ListOfComputersInFolder
} // End of TestController 
Run Code Online (Sandbox Code Playgroud)

以下是我的基本知识APIAuthorizeAttribute.

public class APIAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
    public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        var Request = System.Web.HttpContext.Current.Request;
        var folderId = Request.RequestContext.RouteData.Values["folderId"] ?? Request.Params["folderId] as string;
        if(null == folderId)
        {
            folderId = actionContext.ControllerContext.RouteData.Values["folderId"];
        }

        base.OnAuthorization(actionContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题folderId是在onAuthorize方法中出现null.(我基于代码的fetcher ).

在我看来,这应该工作,但我似乎无法得到它.关于我做错了什么以及如何获取发布参数的任何想法?

编辑:我尝试使用以下内容直接阅读帖子数据:

using (StreamReader inputStream = new StreamReader(request.InputStream))
{
    output …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc post controller

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net-mvc ×2

c# ×2

asp.net-web-api ×1

controller ×1

oauth ×1

post ×1