.NET Core 2.0とAngular 5を使用しています。このテクノロジの作業に関する情報が必要です。 Angular for Front Endおよび.NET CoreをAngewular CLIとdotnet CLIを使用して単一のプロジェクトMVCでバックエンドに使用することは可能ですか?私は実験を行いましたが、結果は良好でした.NEtのコントローラとAngular in the Frontとの接続に問題があります。行政使用するためMVCプロジェクトでAngular 5と.NETを使用する方法
- 一つSPA角度(クライアントアプリケーション):
私はこのアーキテクチャを持っています。
- ユーザーとクライアント(API、サーバーなど)の認証用のAuthServer MVC(.NET CoreとAngular)が1つあります。
私は認証に暗黙のフローを使用していますので、mi SPAにはサインイン用のボタンがあり、ボタンをクリックすると、SPAはAuthServerにリクエストを送信し、auth.myapp.comにリダイレクトします。この場所では、ユーザーがあなたの資格情報(ユーザー名とパスワード)を入力し、authserverがロジックを実現し、トークンを生成してaccess_tokenでSPAにリダイレクトします。それはOpenIDの暗黙の流れです。
まず、「ログイン」と呼ばれる.NETのHttpGETコントローラがあります。このコントローラは "returnURL"という文字列を受け取り、このRazorをRazorビューで使用するためにViewModelに返す必要がありますが、Razorは使用せず、Angularを使用します。それが私の最初の問題です。 miクライアントSPA(admin.myapp.com)では、「サインイン」ボタンがあります。このボタンをクリックすると、認証サーバーへのリクエストが実現されました。このエンドポイントはreturlURLを抽出し、「Angular」の「Login」ページに戻ります。カミソリで
:
return View(vm);
これにreturnurlはauth.myapp.comにadmin.myappp.comので、URLのPARAMために受信される(ローカルホスト:5000):
Angularでの使用方法このViewModel(returnURLの情報を返す)を返し、ログイン要求(HttpPost)で使用する必要があります。 私は、LoginのGETエンドポイントを削除して、Angular Routerを使ってreturnURLのこの "キャプチャ"を実行する方が良いかもしれないと考えていました。そして、この文字列があれば、エンドポイントPOSTを使用してログインして認証を実行し、.NETドライバを使用してアクセストークンを使用して自分のSPAにリダイレクトします。どちらが最善の選択肢でしょうか?私の推論のこの最後の部分は、次の問題につながります:
第2に、私はMVCアプリケーション、ドメインauth.myapp.com、このHttpPOSTコントローラのログインを実現するコントローラを持っていますログインの情報(前のViewModelからのユーザー名、パスワード、returnURl)を持つモデルを受信すると、このモデルは.NETコントローラと接続するサービスAngularから受信され、結果が正の場合は他のSPAにリダイレクトされます他の外部ホストでは、たとえば:admin.myapp.com、SPAで使用するaccess_tokenを指定します。 私はこのコードを使用:
[HttpPost]
public async Task<IActionResult> Login (LoginInputModel model) {
if (ModelState.IsValid) {
if (_usersStore.ValidateCredentials (model.Username, model.Password)) {
var user = _usersStore.FindByUsername (model.Username);
if (_interactionService.IsValidReturnUrl (model.ReturnUrl) || Url.IsLocalUrl (model.ReturnUrl)) {
return Redirect(model.ReturnUrl);
}
return Redirect("~/");
}
}
return Redirect("~/");
}
問題があることである「(リダイレクトを返す)は、」。NETコントローラので、フロントエンドで角度ウィットをリダイレクトする方法を、角度、及びカミソリとそうでは見られませんか?
これは、IdentityServer4で実装されたOpenID認証の暗黙のフローです。
わからない場合。シードは、ログインに成功した後にアプリケーションにリダイレクトされるjsスクリプトを実行するビューを利用します。また、リダイレクトアクションを実行するコントローラ内のロジックを実装することもできますが、これはファウンダが推奨する方法ではありません。 – Aeseir
こんにちは、答えに感謝します。私はIdentityServer4のクイックスタートとサンプルを調べていました。問題は、Razorを使ってintarfazを表示することです。MVCコントローラからリダイレクトするのは簡単です。私の質問は、これをAngular SPAにどのように適用するかです。ここでは、RazorをAngularに置き換えることで、リダイレクトをAngularで直接行う必要があると思いますか? –
私は理解していると思います。リダイレクトなしでログイン/登録したいのですが、IS MVCコンポーネントに間違いありませんか?私は実際にそれを見て、ここで私はhttps://stackoverflow.com/questions/46880662/identityserver-4-restfull-login-logoutを得た答えです。要約は、それが推奨アプローチではないことです、あなたはクライアントとAPIからIS4を分離する必要があります。より安全な場所でのセキュリティ制御 – Aeseir