gpt4 book ai didi

c# - Web Api授权

转载 作者:行者123 更新时间:2023-12-02 21:39:48 24 4
gpt4 key购买 nike

我正在使用 Visual studio 2013 mvc、webapi2 和 Odata 开发 RESTful WebApi,

可以从移动客户端访问。

我正在按照下面给出的教程进行操作

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api

现在我在授权方面遇到了一些困难。我希望 API 受到保护,并希望检查请求是否来自正确的用户。

以下是我的客户端代码

<head>

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>

<script>

$(document).ready(function() {

$( "#post").click(function() {
$.ajax({
type: "GET",
url: "http://localhost:21900/odata/Products(1)",
success: function (data) {
alert(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
});
});
</script>
</head>
<body>
<input type="submit" id="post" value="Post"/>
</body>

和服务器端代码

public class ProductsController : ODataController
{
private ProductServiceContext db = new ProductServiceContext();


[Queryable]
public SingleResult<Product> GetProduct([FromODataUri] int key)
{
return SingleResult.Create(db.Products.Where(product => product.ID == key));
}
}

我已使用 [Authorize] 尝试了上述操作,但对我来说无法正常工作

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

您必须创建如下新属性:-

[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);

////check authentication and return if not authorized
if (actionContext != null)
{
if (!WebSecurity.IsAuthenticated)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized) { RequestMessage = actionContext.ControllerContext.Request };
return;
}

}
}
}

创建上述过滤器属性后,您可以将其添加到 webapiconfig.cs 文件中,如下所示,以便它过滤您的所有请求。

config.Filters.Add(new AuthorizeAttribute());

您还可以为特定方法或类添加它,如下所示

[AuthorizeAttribute]
public class TestController : ApiController

关于c# - Web Api授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com