5

Wiem, że to pytanie może otrzymać kilka zniżek, ale szukam w Google przez trzy dni, bez naprawdę użytecznych wyników.Jak dodać "ApiController" z uwierzytelnianiem tokena w Asp Net Core RC1 MVC

Utworzono domyślny projekt ASP.NET Core 1.0 RC1 w Visual Studio, z uwierzytelnianiem/autoryzacją konta użytkownika indywidualnego. Wszystko jest proste i łatwe w ten sposób, ponieważ projekt jest rusztowany przy użyciu Microsoft.AspNet.Authentication.Cookies, a VS 2015 wykonuje wszystkie operacje podnoszenia ciężarów.

Chcemy jednak ujawnić API z tego samego projektu (przy użyciu tej samej bazy danych, użytkowników, roszczeń itd.), Które zostanie zużyte z urządzeń mobilnych, a nawet niektórych prostych SPA. W ten sposób musimy użyć czegoś takiego jak JWT dla API (istnieje kilka tutoriali, jak to zrobić tylko z WebAPI).

Chcemy wykonać główny projekt, wykorzystując metodę MVC (nie SPA) do wykorzystania rusztowania widoków/kontrolerów i wszystkiego, co może zaoferować Visual Studio.

Istnieje wiele samouczków dotyczących tylko MVC lub tylko WebAPI, ale czy możesz wskazać mi, w jaki sposób mogę je połączyć?

Czy istnieje sposób używania JWT tylko z MVC i WebAPI dla całego systemu?

Z góry dziękuję.

+0

Wystarczy FYI: MVC i WebAPI zostały połączone w MVC 6 'Controller' służy jako klasa podstawowa zarówno dla kontrolerów" MVC "i" API ", np nie ma już "ApiController". –

+0

Witam @HenkMollema Wiem ... Z tego powodu umieściłem "ApiController" między cytatami. Wiem, że kontrolery są takie same. W każdym razie, dziękuję za komentarz. –

+0

Witam @ Cezar. Czy kiedykolwiek to rozgryzłeś? Mam dokładnie ten sam scenariusz i pytanie. Dzięki –

Odpowiedz

1

Limiting identity by scheme ten link może być odpowiedzią na twoje pytanie.

W niektórych sytuacjach, takich jak pojedyncze strony aplikacji możliwe jest skończyć z wielu metod uwierzytelniania, autoryzacji cookie do zalogować i okaziciela uwierzytelniania dla javascript życzenie.

myślę, możesz skorzystać z poniższego kodu do MVC i JavaScript wywołuje (oczywiście, należy włączyć Cookie and okaziciela middleware):

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

Dziękujemy za odpowiedź! Obawiam się, że to nie działa w środowisku ASP.NET Core 1, ponieważ istnieje tylko atrybut "ActiveAuthenticationSchemes" i nie ma go w konstruktorze. Teraz jedyną rzeczą, którą akceptuje jako parametr, jest ciąg zawierający nazwę zasady: 'public AuthorizeAttribute (string policy);'. Czy możesz wskazać mi, w jaki sposób powinienem utworzyć zasady "Tylko WebAPI"? –

+0

Nie mogłem przetestować kodu, ale może to być rozwiązanie: 'options.AddPolicy (" PolicyName ", policy => { policy.Requirements.Add (new Infrastructure.MinimumAgeRequirement (21)); policy.AddAuthenticationSchemes (" Nośnik "); });' –