2017-09-11 22 views
5

मैं एक कोणीय 4 एप्लिकेशन लिख रहा हूं जिसे Asp.Net WebApi से कुछ डेटा प्राप्त करने की आवश्यकता है। हम वेबएपीआई के लिए विंडोज प्रमाणीकरण का उपयोग कर रहे हैं और मैं सोच रहा हूं कि मैं अपने कोणीय अनुप्रयोग से वेबएपी तक उपयोगकर्ता की विंडोज पहचान कैसे पास कर सकता हूं। मुझे कुछ उदाहरण मिल गए हैं जिनमें एमवीसी एप्लिकेशन के साथ आपके आवेदन को घोंसले शामिल हैं लेकिन मैं यूआई को एमवीसी से दूर रखना चाहता हूं। क्या मेरे कोणीय वेबसाइट पर .NET mvc जोड़ने के बिना ऐसा करने का कोई तरीका है?विंडोज प्रमाणीकरण और कोणीय 4 अनुप्रयोग

+0

को सक्षम करना होगा त्रुटियों मिलता है https://docs.microsoft.com/en-us/aspnet/core/security/cors

:

आप की संभावना यहाँ CORS प्रलेखन को सक्षम करना होगा अच्छा है : https://stackoverflow.com/questions/41337145/how-can-i-get-and-post-an-action-using-angular-2-in-mvc/41341743#41341743 –

+0

जो मैं देख सकता हूं वह यह है कि वे नियमित प्रमाणीकरण का उपयोग कर रहे हैं। मैं विंडोज प्रमाणीकरण – AlexanderM

+0

@AlexanderM का उपयोग करना चाहूंगा क्या यह प्रश्न ठीक से उत्तर दिया गया था? यदि ऐसा है तो कृपया उत्तर चिह्नित करें। – RayLoveless

उत्तर

2

जब आप अपने वेबएपीआई करने कोणीय से अपने http अनुरोध भेज आप RequestOptions ({withCredentials = true}) का उपयोग करने के

यहां नमूने सुरक्षा सेवा है कि एक एपीआई

@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 || {}); 
    } 

} 

यह वह जगह है कॉल है जरूरत प्रमाणन वर्ग

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

आप तो .net कोर का उपयोग कर रहे हैं, तो आपके वेबएपीआई नियंत्रक में आप अब उपयोग कर सकते हैं this.User.Identity.IsAuthenticated

एनबी: आप ASP.Net कोर 2.0 का उपयोग कर रहे हैं तो आप "विंडोज प्रमाणीकरण (HTTP.sys/IISIntegration)" अनुभाग यहाँ पालन करने की आवश्यकता https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x

आप Windows सक्षम करने के लिए याद रखना चाहिए मेजबान पर प्रमाणीकरण जैसे आईआईएस या IISExpress। आप के चारों ओर "preflight जाँच करता है" तो तुम भी हो सकता है कि लिंक आपकी मदद करेगा बेनामी पहुँच

+0

आपने अपनी प्रतिक्रिया "आईआईएस या IISExpress" में कहा था। क्या आपने IISExpress की कोशिश की है और यह काम करता है? क्योंकि मेरे पास है और मैं इसे – Dan

+0

काम नहीं कर सकता हां, क्रोम का उपयोग करके दोनों काम करते हैं। क्या ब्राउज़र ने कोशिश की है? –

+0

केवल इंटरनेट एक्सप्लोरर। वह मुख्य ब्राउज़र है जिसे समर्थित करने की आवश्यकता है। मैं क्रोम को यह देखने के लिए कोशिश करूंगा कि यह काम करता है या नहीं – Dan

संबंधित मुद्दे