質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

3446閲覧

ASP.NET Core / Angular Webアプリでログインができない

yamacs

総合スコア1

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/07/29 10:23

前提・実現したいこと

AngularでASP.NET Core Webアプリケーションを作成しており、
ログイン・ログアウト機能を実装したいです。

発生している問題・エラーメッセージ

ユーザー登録はできるのですが、ログインをすることができず困っています。

<行ったこと>

  • VisualStudio2019でAsp.Net Core WebアプリケーションのAngularテンプレート(個別のユーザーアカウントで認証)でプロジェクトを作成しました。
  • その後、パッケージマネージャーコンソールから次のコマンドを実行し、マイグレーションを行いました。

 ・Add-Migration InitialCreate
・Update-Database

  • ビルドしデバッグを実行して立ち上げた後、「Registry」でユーザーを登録。
  • 作成したユーザーのメールアドレスとパスワードでログインを試みるものの、Invalid login attempt.と出てしまいログインができません。

※ DBにユーザーが登録されているのは確認しました。また、入力内容はコピペなので誤りもないかと思います。

該当のソースコード

プロジェクトを作成後、マイグレーションを実行した以外は何もしておりません(きっと何かを加える必要があるかと思うのですが・・・)。下記ソースコードはすべて namespaceを省略しています。

Startup.cs

C#

1public class Startup 2{ 3 public Startup(IConfiguration configuration) 4 { 5 Configuration = configuration; 6 } 7 8 public IConfiguration Configuration { get; } 9 10 public void ConfigureServices(IServiceCollection services) 11 { 12 services.AddDbContext<ApplicationDbContext>(options => 13 options.UseSqlServer( 14 Configuration.GetConnectionString("DefaultConnection"))); 15 16 services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true) 17 .AddEntityFrameworkStores<ApplicationDbContext>(); 18 19 services.AddIdentityServer() 20 .AddApiAuthorization<ApplicationUser, ApplicationDbContext>(); 21 22 services.AddAuthentication() 23 .AddIdentityServerJwt(); 24 services.AddControllersWithViews(); 25 services.AddRazorPages(); 26 27 services.AddSpaStaticFiles(configuration => 28 { 29 configuration.RootPath = "ClientApp/dist"; 30 }); 31 } 32 33 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 34 { 35 if (env.IsDevelopment()) 36 { 37 app.UseDeveloperExceptionPage(); 38 app.UseDatabaseErrorPage(); 39 } 40 else 41 { 42 app.UseExceptionHandler("/Error"); 43 44 app.UseHsts(); 45 } 46 47 app.UseHttpsRedirection(); 48 app.UseStaticFiles(); 49 if (!env.IsDevelopment()) 50 { 51 app.UseSpaStaticFiles(); 52 } 53 54 app.UseRouting(); 55 56 app.UseAuthentication(); 57 app.UseIdentityServer(); 58 app.UseAuthorization(); 59 app.UseEndpoints(endpoints => 60 { 61 endpoints.MapControllerRoute( 62 name: "default", 63 pattern: "{controller}/{action=Index}/{id?}"); 64 endpoints.MapRazorPages(); 65 }); 66 67 app.UseSpa(spa => 68 { 69 70 spa.Options.SourcePath = "ClientApp"; 71 72 if (env.IsDevelopment()) 73 { 74 spa.UseAngularCliServer(npmScript: "start"); 75 } 76 }); 77 } 78} 79

ApplicationDbContext.cs

C#

1public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser> 2{ 3 public ApplicationDbContext( 4 DbContextOptions options, 5 IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions) 6 { 7 } 8}

試したこと

  • マイクロソフトの公式に当該の内容かと思われる「SPAs の認証と承認」というページがあったので読み、書いてあるコードの一部を実行しました。ただ読んでいても理解ができない部分も多く、ちゃんと実行できたかは心配です。

補足情報(FW/ツールのバージョンなど)

実行環境は Windows10、 VisualStudio2019, ASP.NET Core3.1 です。

認証機能がついたASP.NETのWebアプリケーションを作るのは初めてなので、認証機能実装の壁を越えられずにいます・・・。どなたにご教示いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/30 01:37

Angular というのは必須条件なのですか? 多分そうであろうと思いながらもお聞きしてますが・・・ もし、ASP.NET Web アプリの勉強をしているとかで Angular にこだわるわけではなく、ユーザー認証が実装できれば Web Forms でも MVC でも Razor でもよいということであれば Angular という条件は外してもらった方が回答が集まりやすそうですので。
退会済みユーザー

退会済みユーザー

2020/07/31 00:52

質問者さん、無言ですが、回答しているのでそれに対するフィートバックをしてください。役に立った・立たなかった程度のレスならすぐに返せるのでは? 無言はとにかく NG です。
yamacs

2020/07/31 03:25

ご連絡が遅くなり、大変申し訳ありません。そして非常に丁寧にご回答くださったにもかかわらず、まだしっかり試すことができていない現状です。今日明日中に確認しあらためてフィードバックさせていただきます。 ちなみに > Angular というのは必須条件なのですか? > もし、ASP.NET Web アプリの勉強をしているとかで Angular にこだわるわけではなく、ユーザー認証が実装できれば Web Forms でも MVC でも Razor でもよいということであれば Angular という条件は外してもらった方が回答が集まりやすそうですので。 おっしゃる通りかと思います。ただできることであればAngularでフロントエンドを実装したいと考えておりました。ただお書きになっている通り、まずはASP.NET Web アプリを学ぶためにMVCなどで実装をしてみたほうがよいのかもしれません。そちらも検討いたします。 いずれにせよ丁寧にご回答くださった内容、必ずトライさせていただきます。
guest

回答1

0

ベストアンサー

作成したユーザーのメールアドレスとパスワードでログインを試みるものの、Invalid login attempt.と出てしまいログインができません。

自分の環境 Windows 10 Pro 64-bit v1909, VS2019 v16.6.5, Core 3.1 で以下の通りテンプレートを作って自動生成させたアプリで試してみましたが、そういうことはなく、問題なくログインできました。

イメージ説明

質問に書いてあったことと自分のケースで違うのは、以下の画像の通りプロジェクトを生成した時点で EF Code First で DB を作るためのスキーマ定義ファイルは作られているので、Add-Migration は不要で、Update-Database だけで LocalDB に ASP.NET Identity 用の DB は生成されるということです。

イメージ説明

それから、質問には書いてなかったですが、登録に成功すると表示される下の画像で Click here to confirm your account をクリックしましたか?

イメージ説明

デフォルトで Email Confirmation が有効になっているので、メールを送る代わりに上の画像のページで確認を行うようになっています。それをしないと EmailConfirmed フィールドが True にならないのでログインできません。

イメージ説明

その後ならログインできるはずです。

イメージ説明

上の回答の太文字の部分の違いが怪しいので確認してみてください。

後はデバッグするぐらいしか手はないですが、登録・ログイン関係はソースコードではなく Razor Class Library として提供されているので、そのままではブレークポイントが設定できないのが問題です。スキャフォールディング機能を使ってソースコードを取り込むまでやるかどうかはお任せします。

投稿2020/07/30 07:35

編集2020/07/30 07:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamacs

2020/07/31 03:43

フィードバック遅れてしまい、本当に申し訳ありません。 今しがたこちらに回答してくださった通りに実践してみたところ無事にログインすることができました! おっしゃる通り、太字の部分が今回の問題の原因だったようです。マイグレーションするには「Add-Migration」「Update-Database」が必要だと思っていたのですが、このテンプレートでは「Update-Database」だけで良かったのですね。 また、登録後の「Click here to confirm your account」も完全に見逃していました。こちらのクリックが必要だということは本当に自分だけでは気づくことができませんでした。 この度は非常に分かりやすく原因をご指摘くださりありがとうございました。本当に救われました。そして繰り返しになりますがフィードバック遅れてしまったこと、大変申し訳ありません。このようにすぐにご回答くださる方の誠意を無下にするような対応が二度とないよう今回のことはしっかり学びとし、引き続きこちらのサイトを使わせていただければと思います。本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問