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
cevap
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
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
Evet, her ikisi de Chrome'u kullanıyor. Hangi tarayıcılar denedi? –
Sadece Internet Explorer. Desteklenmesi gereken ana tarayıcı budur. Çalışıp çalışmadığını görmek için Chrome'u deneyeceğim – Dan
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 –
Görebildiğim kadarıyla düzenli kimlik doğrulaması kullanıyorlar. Windows Kimlik Doğrulaması'nı kullanmak istiyorum – AlexanderM
@AlexanderM bu soru doğru cevaplanmış mıydı? Eğer öyleyse lütfen cevabı işaretleyin. – RayLoveless