2017-09-11 51 views
5

Asp.Net WebApi'den bazı veriler alması gereken bir Angular 4 uygulaması yazıyorum. WebAPI için Windows kimlik doğrulaması kullanıyoruz ve kullanıcının Pencere kimliğini Açısal Uygulamamdan WebApi'ye nasıl geçirebileceğimi merak ediyorum. Uygulamanızı MVC uygulamasıyla yerleştirmeyi içeren birkaç örnek buldum ancak UI'yi MVC'den uzak tutmak istiyorum. Açısal web siteme .net mvc eklemeden bunu yapmanın bir yolu var mı? Eğer WebAPI için Açısal adresinin http isteği gönderdiğinizdeWindows Kimlik Doğrulama ve Açısal 4 uygulama

+0

etkinleştirmeniz gerekir "önkontroller" etrafında hataları alırsanız https://docs.microsoft.com/en-us/aspnet/core/security/cors

:

Büyük olasılıkla burada CORS belgelerine etkinleştirmeniz gerekecektir iyidir : https://stackoverflow.com/questions/41337145/how-can-i-get-and-post-an-action-using-angular-2-in-mvc/41341743#41341743 –

+0

Görebildiğim kadarıyla düzenli kimlik doğrulaması kullanıyorlar. Windows Kimlik Doğrulaması'nı kullanmak istiyorum – AlexanderM

+0

@AlexanderM bu soru doğru cevaplanmış mıydı? Eğer öyleyse lütfen cevabı işaretleyin. – RayLoveless

cevap

2

Eğer burada

Bu

@Injectable() 
export class SecurityService { 
private baseUrl = 'http://localhost:64706/api/security/'; 
private auth: Auth; 
private options = new RequestOptions({ withCredentials: true }); 

constructor(private http: Http) { 
    console.log('Creating Service'); 

    console.log('Service Pre Http'); 

    this.http.get(this.baseUrl, this.options) 
     .map((res) => this.extractData<Auth>(res))  
     .subscribe(newItem => { 
     console.log('Service Subscribe'); 
     this.auth = newItem; 
     }) 

    } 

    public isUser(): Observable<boolean> | boolean { 

    if (!this.auth) { 
     return this.http.get(this.baseUrl, this.options) 
     .map(res => { 
      this.auth = this.extractData<Auth>(res); 
      return this.auth.isUser; 
     }); 
    } 
    else { 
     return this.auth.isUser; 
    } 


    } 

    private extractData<T>(res: Response) { 
    if (res.status < 200 || res.status >= 300) { 
     throw new Error('Bad response status: ' + res.status); 
    } 
    const body = res.json ? res.json() : null; 
    return <T>(body || {}); 
    } 

} 

bir API çağrıları örnek bir güvenlik hizmeti bulunuyor RequestOptions ({withCredentials = true}) kullanmak gerekir Şimdi erişebilirsiniz

export class Auth { 
    isAdmin: boolean; 
    isUser: boolean; 
} 

size WebAPI Kontrolörü sonra .net Çekirdek kullanıyorsanız auth sınıfı this.User.Identity.IsAuthenticated

Not: Eğer ASP.Net Çekirdek 2.0 kullanıyorsanız o zaman "Windows Authentication (HTTP.sys/IISIntegration)" Burada bölümünü izlemeniz gerekir https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x

Ayrıca Windows'u etkinleştirmek için hatırlamalıyız Ana bilgisayardaki kimlik doğrulaması örn. IIS veya IISExpress. Eğer o zaman da belki bağlantı size yardımcı olacaktır Anonim Erişim

+0

yanıtınızda "IIS veya IISExpress" yazdınız. IISExpress'i denediniz mi ve işe yaradı mı? Çünkü sahip olduğum ve yapamayacağım – Dan

+0

Evet, her ikisi de Chrome'u kullanıyor. Hangi tarayıcılar denedi? –

+0

Sadece Internet Explorer. Desteklenmesi gereken ana tarayıcı budur. Çalışıp çalışmadığını görmek için Chrome'u deneyeceğim – Dan

İlgili konular