5

Tôi đang sử dụng phần mềm trung gian xác thực đang tạo yêu cầu API cho dịch vụ của bên thứ ba. Middleware này sau đó thiết lập các tuyên bố sau đó được xử lý bởi một AuthorizationHandler kết hợp với một IAuthorizationRequirement và một chính sách tùy chỉnh.Chuyển hướng tùy chỉnh từ AuthorizationHandler (ASP.NET Core)

Các mảnh middleware làm việc và tôi có thể xây dựng những tuyên bố:

context.User.AddIdentity(identity); // contains claims 

đâu tôi bị mắc kẹt được chuyển hướng đến một URL cụ thể (có quy tắc tùy chỉnh cho nơi chúng tôi cần phải chuyển hướng) từ xử lý hoặc thuộc tính. Từ trình xử lý tôi đã thử:

var mvcContext = context.Resource as Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext; 
mvcContext.Result = new RedirectToActionResult("login", "home", null); 

nhưng bị bỏ qua; chỉ 401 được trả lại. AuthorizeAttribute không còn có OnAuthorization vì vậy tôi không thể sử dụng ...

Suy nghĩ? Cảm ơn.

Trả lời

0

Nếu điều duy nhất bạn muốn thử trong Middleware của API của bạn là để thực hiện một hành vi đăng nhập, như mã của bạn dường như để giải thích, những trường hợp này có thể được, theo ý kiến ​​của tôi, nghĩ kích thích tư duy:

  1. Nếu /login/home chuyển hướng đến một trang web:

    • Bạn nên sử dụng HttpContext.Response.Redirect để chuyển hướng đến trang web đăng nhập. As the documentation says, Điều này sẽ gửi mã 301 mà bất kỳ trình duyệt web nào cũng có thể giải thích. HttpContext có sẵn trong phương thức Invoke.
  2. Nếu /login/home chuyển hướng đến một bộ điều khiển thực hiện logic xác nhận danh tính người dùng:

cũng Hãy xem Nate's post, và this question.

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