2016-08-15 15 views
19

Tôi vừa tạo dự án API Web mới (sử dụng MVC) trong studio trực quan năm 2015 và cho mục đích thử nghiệm, tôi đã chạy dự án đó nhưng đã kết thúc dưới lỗi.Ủy quyền đã bị từ chối cho yêu cầu này - Dự án API Web mới

Sau khi chạy dự án, nó sẽ trả về Trang chính xác nhưng khi tôi điều hướng đến/api/values ​​hoặc/api/values ​​/ 5, nó cung cấp cho tôi thông báo xml bên dưới.

<Error> 
    <Message>Authorization has been denied for this request.</Message> 
</Error> 

Ai đó có thể vui lòng trợ giúp? Tôi mới sử dụng API Web. Xin lưu ý rằng tôi không muốn xóa thuộc tính Ủy quyền. Tôi chỉ muốn truy cập tài nguyên sau khi được ủy quyền. Vì vậy, tôi đang tìm kiếm những gì là sai.

+7

Đặt [AllowAnonymous] trong bộ điều khiển giá trị. –

+0

@ atp9 Đúng vậy. – Arnstein

+0

Tại sao bật anon khi OP cho biết auth muốn được bật? – StingyJack

Trả lời

45

Trong ValuesController có một thuộc tính Authorize nếu bạn loại bỏ nó, sau đó nó sẽ hoạt động như trang chủ.

Thuộc tính Authorize chỉ ngăn người dùng ẩn danh truy cập vào ValuesController.

để làm việc với thuộc tính này, trước tiên bạn cần phải đăng ký người dùng và sau đó đăng nhập để nhận mã thông báo của người dùng, sau đó bạn có thể sử dụng mã thông báo để ủy quyền cho chính mình và truy cập.

Trong trang này Individual-accounts-in-web-api được giải thích tất cả những gì bạn cần

+2

Cảm ơn bạn đã thông tin. Đó là những gì tôi đang tìm kiếm. – atp9

+0

cảm ơn nội dung thực sự tốt –

12

Nó xảy ra bởi vì bạn có một Authorize thuộc tính trên của bạn ValuesController

[Authorize] 
public class ValuesController : ApiController 

Chỉ cần loại bỏ [Authorize] và thử lại

EDIT

Theo sửa đổi của bạn: Bạn nên tạo một người dùng mới và đăng nhập hoặc sử dụng [AllowAnonymous] như đã đề cập bởi @Marcus H. Đọc thêm về Identity

+0

Tôi không muốn làm api trái phép. Tôi muốn nó xác thực các yêu cầu gửi đến. – atp9

+0

Ok, không sao cả, sau đó tạo người dùng mới và đăng nhập. – Marusyk

+0

Không, Câu hỏi là tại sao nó không cho phép tôi truy cập tài nguyên. Nếu tôi không phải là người dùng hợp lệ, cách khắc phục điều đó? – atp9

0

Tôi nhận được câu trả lời ở đây.

https://stackoverflow.com/a/29405794/8107314

Và nó đã rất hữu ích để sửa chữa lỗi của tôi lỗi của tôi

Tôi vừa bắt gặp cùng một vấn đề và tìm ra giải pháp:

Bạn cần phải đăng ký Mã thông báo OAuth Generator và OAuth Token Consumer things trước khi WebAPI được đăng ký.

Loại có ý nghĩa nếu bạn nghĩ đây là một đường ống, trong đó Xác thực/Cấp phép phải đến trước bất kỳ yêu cầu nào của bộ điều khiển xử lý.

TL; DR: Thay đổi

appBuilder.UseWebApi(config); 

this.ConfigureOAuthTokenGenerator(appBuilder); 
this.ConfigureOAuthConsumer(appBuilder); 

Để

this.ConfigureOAuthTokenGenerator(appBuilder); 
this.ConfigureOAuthConsumer(appBuilder); 

appBuilder.UseWebApi(config); 

By cguedel top 43% tổng Engineer Senior Software

nhà phát triển phần mềm quan tâm đến tất cả mọi thứ.NET, đặc biệt là WPF SOreadytohelp

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