7

Tôi muốn thực hiện tùy chỉnh thuộc tính [Ủy quyền] trong các điều khiển.Cách tạo ủy quyền tùy chỉnh trong ASP.NET Core (ASP.NET 5)

Đây là những gì tôi đã làm.

  1. StartupClass trong ConfigureServices

    services.AddAuthorization(options => 
    {  
        options.AddPolicy("Authorize", policy => 
        { 
         policy.AddRequirements(new MyRequirement()); 
        }); 
    }); 
    
  2. MyRequirement

    public class MyRequirement : AuthorizationHandler<MyRequirement>, IAuthorizationRequirement 
    { 
        protected override void Handle(AuthorizationContext context, MyRequirement requirement) 
        { 
         //some work 
         //if shloud be authorized 
         context.Succeed(requirement); 
        } 
    } 
    
  3. TestController

    [Authorize("Authorize")] 
    [Route("api/[controller]")] 
    public class TestController : Controller 
    { 
        ... 
    } 
    

Tôi đang thiếu gì? Myizequirement authorizationhader không bao giờ được gọi. Cảm ơn bạn.

+2

Bạn có thực sự thực? Ủy quyền sẽ không đưa vào chính sách cho đến khi bạn có một danh tính. – blowdart

+0

Tôi không. Có vẻ như tôi đang tìm phần mềm trung gian xác thực cơ bản .. – Chatumbabub

+0

Bạn có nghĩa là cơ bản như trong xác thực HTTP hoặc cơ bản như trong, tôi muốn xóa nhận dạng này trên mọi yêu cầu trong khi tôi kiểm tra? – blowdart

Trả lời

6

Tôi tin rằng bạn đang thiếu phần này:

services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>(); 

Source

+0

Có thể áp dụng Chính sách không có tên để Chính sách sẽ được áp dụng trong tất cả yêu cầu ủy quyền không? –

+0

Làm cách nào để có quyền truy cập vào các tiêu đề từ đây? –

+0

@mr_squall nếu bạn cần quyền truy cập vào tiêu đề để nhận được người dùng/khiếu nại chính mà bạn có thể sử dụng ** context.user.Identity ** bằng cách định kiểu nó là ClaimsIdentity – raghav710

Các vấn đề liên quan