2017-09-11 40 views
5

私はAsp.Net WebApiからデータを取得する必要があるAngular 4アプリケーションを作成しています。私たちはWebAPIにWindows認証を使用しています。私はAngular ApplicationからWebApiにユーザーのWindows IDをどのように渡すことができるのだろうかと思います。 MVCアプリケーションでアプリケーションを入れ子にすることを含むカップルの例が見つかりましたが、MVCからUIを離しておく必要があります。 .net mvcをAngularのウェブサイトに追加せずにそれを行う方法はありますか?Windows認証とAngular 4アプリケーション

+0

を有効にする必要があります。たぶん、そのリンクがお手伝いします:https://stackoverflow.com/questions/41337145/how-can-i-get-and-post-an-action-using-angular-2-in-mvc/41341743#41341743 –

+0

私が見ることができるのは、彼らは定期的な認証を使用しています。私はWindows認証を使用したい – AlexanderM

+0

@AlexanderMはこの質問が正しく答えたのですか?もしそうなら、答えに印を付けてください。 – RayLoveless

答えて

2

あなたが角度からあなたのWebAPIのようにHTTPリクエストを送信すると、あなたが RequestOptions({withCredentials =真を})を使用する必要があり

ここではこれがある

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

} 

APIを呼び出すサンプルセキュリティサービスですあなたは今 にアクセスすることができ、あなたのWebAPIのコントローラーで、その後、.NETのコアを使用している場合は、authクラス

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

this.User.Identity.IsAuthenticated

NB:あなたはASP.Netコア2.0を使用している場合は、 "Windows認証(HTTP.sysは/ IISIntegration)" のセクションを実行する必要があり、ここで https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x

また、Windowsを有効にするために覚えておく必要がありますIISやIISExpressなどのホスト上での認証。

あなたはおそらくここにドキュメントが良いですCORSを有効にする必要があります。 https://docs.microsoft.com/en-us/aspnet/core/security/cors

あなたが「プリフライトチェック」の周りにエラーが発生した場合、あなたはまた、匿名アクセス

+0

あなたはあなたの回答に「IIS or IISExpress」と言っています。 IISExpressを試してみましたか?私が持っているので、私はそれを動作させることはできません – Dan

+0

はい、両方ともクロムを使用して動作します。どのブラウザが試しましたか? –

+0

Internet Explorerのみ。これは、サポートが必要なメインブラウザです。私はそれが動作するかどうかを見るためにChromeを試みます – Dan

関連する問題