c# api身份验证和授权

 

授权

 

1. 全局

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

 

 

2.控制器级别

   
  [Authorize]   
public class HelloController : ApiController { public string GetTest() { return "hello,world"; } }

 

3.方法级别

    public class HelloController : ApiController
    {
        [Authorize]
        public string GetTest()
        {
            return "hello,world";
        }

    }

 

访问网址会得到401的状态

http://localhost:55658/api/hello 

 

如果想要在禁止全部的情况下,开放某个方法

    [Authorize]
    public class HelloController : ApiController
    {
        [AllowAnonymous]
        public string GetTest()
        {
            return "hello,world1";
        }
        public string PostTest()
        {
            return "hello,world2";
        }

    }

 

 

 身份验证

1.基本身份验证

 

2.forms身份验证

 

3.windows身份验证

 

 

 

 

 

转载于:https://www.cnblogs.com/buchizaodian/p/11209540.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个 C# WebAPI 中实现 Header 验证的示例代码: ```csharp public class HeaderAuthenticationFilter : IAuthenticationFilter { private readonly string apiKey = "your_api_key_here"; public bool AllowMultiple => false; public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken) { // 获取请求头的 Authorization 字段 var authHeader = context.Request.Headers.Authorization; // 如果 Authorization 字段不存在或不是 Bearer 形式的 Token,则返回未授权的错误 if (authHeader == null || !authHeader.Scheme.Equals("Bearer", StringComparison.OrdinalIgnoreCase)) { context.ErrorResult = new AuthenticationFailureResult("Unauthorized", context.Request); return; } // 获取 Token var token = authHeader.Parameter; // 验证 Token 是否正确 if (string.IsNullOrWhiteSpace(token) || !token.Equals(apiKey)) { context.ErrorResult = new AuthenticationFailureResult("Unauthorized", context.Request); return; } // 设置用户身份验证信息 var identity = new GenericIdentity("user"); context.Principal = new GenericPrincipal(identity, new string[] { }); } public Task ChallengeAsync(HttpAuthenticationChallengeContext context, CancellationToken cancellationToken) { return Task.FromResult(0); } } public class AuthenticationFailureResult : IHttpActionResult { public string ReasonPhrase { get; private set; } public HttpRequestMessage Request { get; private set; } public AuthenticationFailureResult(string reasonPhrase, HttpRequestMessage request) { ReasonPhrase = reasonPhrase; Request = request; } public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { var response = new HttpResponseMessage(HttpStatusCode.Unauthorized); response.RequestMessage = Request; response.ReasonPhrase = ReasonPhrase; return Task.FromResult(response); } } ``` 在上述代码中,我们创建了一个名为 `HeaderAuthenticationFilter` 的类,该类实现了 `IAuthenticationFilter` 接口,用于在 WebAPI 的管道中进行身份验证。我们在 `AuthenticateAsync` 方法中进行身份验证,如果验证失败,则设置 `ErrorResult` 属性返回未授权的错误。如果验证成功,则设置 `Principal` 属性为一个包含用户信息的 `IPrincipal` 对象。最后,我们创建了一个名为 `AuthenticationFailureResult` 的类,该类实现了 `IHttpActionResult` 接口,用于返回错误响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值