5

Tôi biết rằng câu hỏi này có thể nhận được một số downvotes, nhưng tôi đang tìm kiếm trên Google trong ba ngày, không có kết quả thực sự có thể sử dụng.Làm thế nào để thêm "ApiController" với xác thực mã thông báo bên trong Asp Net Core RC1 MVC

Tôi đã tạo dự án ASP.NET Core 1.0 RC1 mặc định trong Visual Studio, với xác thực/ủy quyền tài khoản người dùng cá nhân. Mọi thứ đều dễ dàng và đơn giản theo cách này, bởi vì dự án được dàn dựng bằng cách sử dụng Microsoft.AspNet.Authentication.Cookies và VS 2015 thực hiện tất cả việc nâng hạng nặng.

Tuy nhiên, chúng tôi muốn hiển thị API từ cùng một dự án (sử dụng cùng cơ sở dữ liệu, người dùng, xác nhận quyền sở hữu), sẽ được sử dụng từ thiết bị di động và thậm chí một số SPA đơn giản. Bằng cách này, chúng ta cần sử dụng một cái gì đó giống như JWT cho API (Có một loạt các hướng dẫn về cách thực hiện điều này với chỉ WebAPI).

Chúng tôi muốn thực hiện dự án chính bằng cách sử dụng MVC (không SPA) để tận dụng việc sử dụng giàn giáo xem/điều khiển và mọi thứ mà Visual Studio có thể cung cấp.

Có rất nhiều hướng dẫn về phương pháp tiếp cận chỉ MVC hoặc chỉ WebAPI, nhưng bạn có thể chỉ cho tôi cách tôi có thể trộn chúng lại với nhau không?

Có cách nào chỉ sử dụng JWT với MVC và WebAPI toàn hệ thống không?

Cảm ơn bạn trước.

+0

Just FYI: MVC và WebAPI đã được sáp nhập trong MVC 6 'Controller' đóng vai trò là lớp cơ sở cho cả hai bộ điều khiển 'MVC' và 'API', ví dụ không còn 'ApiController' nữa. –

+0

Hi @HenkMollema Tôi biết ... Vì lý do này tôi đã đặt "ApiController" giữa dấu ngoặc kép. Tôi biết rằng các bộ điều khiển là như nhau. Dù sao, cảm ơn bạn đã bình luận. –

+0

Xin chào @Cezar. Bạn đã bao giờ con số này ra? Tôi có cùng một kịch bản và câu hỏi. Cảm ơn –

Trả lời

1

Limiting identity by scheme liên kết này có thể là câu trả lời cho câu hỏi của bạn.

Trong một số tình huống, chẳng hạn như ứng dụng Single Page nó có thể cuối lên với nhiều phương pháp xác thực, xác thực cookie đăng nhập và xác thực người mang cho yêu cầu javascript.

Tôi nghĩ rằng, bạn có thể sử dụng dưới mã cho MVC và javascript gọi (tất nhiên, bạn phải kích hoạt cookie và mang middlewares):

[Authorize(AuthenticationSchemes = "Cookie,Bearer")] 
public class YourController : Controller 
+0

Cảm ơn bạn đã trả lời! Tôi e rằng điều này không làm việc trong ASP.NET Core 1, bởi vì chỉ có một thuộc tính 'ActiveAuthenticationSchemes', và nó nằm ngoài constructor. Bây giờ, điều duy nhất nó chấp nhận như một tham số là một chuỗi chứa tên chính sách: 'public AuthorizeAttribute (string policy);'. Bạn có thể chỉ cho tôi cách tôi nên tạo chính sách "Chỉ WebAPI" không? –

+0

tôi không thể kiểm tra mã, nhưng có thể là giải pháp: 'options.AddPolicy (" PolicyName ", policy => { policy.Requirements.Add (new Infrastructure.MinimumAgeRequirement (21)); policy.AddAuthenticationSchemes (" Bearer "); });' –

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