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

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

新規登録して質問してみよう
ただいま回答率
87.20%
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

解決済

asp.net core2.2でのセッション管理の方法を教えて頂きたいです。

ao1101
ao1101

総合スコア21

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

2回答

0評価

0クリップ

4824閲覧

投稿2019/01/21 08:27

編集2019/01/22 00:15

開発初心者です。
質問内容等分かりにくい部分があったら申し訳ございませんが、
実現したいことが上手く出来ないのでご助言お願い致します。

前提・実現したいこと

asp.net core2.2 MVC を利用して開発の練習をしている所です。
フォーム認証でログイン後、セッションを開始し、その後のページをログインした人しか見れないようにしたいのですが、どうすればよいでしょうか。
ネットからappsettings.jsonやStartup.csのsession準備は出来ていると思います。

データベースから入力情報とデータベースを照合し、一致すればログインしてページ遷移出来るようにしました。
ページ遷移後のディレクトリにビューが2つあり、ページ内でリンクを付けています。
[Authorize]でそのページを保護するとURLに直接階層を入力しても飛べなくはなるのですが、ログイン後に別のページに行こうとすると認証が出来ずにエラーになってしまうため、セッションを使ってログインした人なら問題なくページ遷移出来るようにしたいです。

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

セッションを確認してちゃんとページ遷移が出来る様にするにはどうしたら良いか分かりません。
また、セッションIDを人によってランダムに生成することなどは出来るのでしょうか。

該当のソースコード

C#

//[Authorize] public class AfterLoginController : Controller { // GET: AfterLogin/Entry public ActionResult Entry() { HttpContext.Session.GetInt32("test"); return View(); } //GET:AfterLogin/Status public ActionResult Status() { HttpContext.Session.GetInt32("test"); return View(); } } } ------------------------------------------------------ public class HomeController : Controller { public UserContext DbContext { get; } public HomeController(UserContext dbContext) { DbContext = dbContext; } [AllowAnonymous] [HttpGet] public ActionResult Index() { return View(); } [AllowAnonymous] [HttpPost] public ActionResult Index(User user) { var auth = (from u in DbContext.Users where u.Name == user.Name && u.Password == user.Password select u.Id).FirstOrDefault(); if (auth == 0) { return View("ErrorLogin"); } else { HttpContext.Session.SetInt32("test", 123456789); return View("../AfterLogin/Entry"); } }

この情報だけで足りるか分からないのですが、足りなければ教えて頂きたいです。

ご教授宜しくお願い致します。

--追記
Identityを使用して管理できるのではないかとアドバイス頂いたので、そちらも試してみようと思います。
引き続き解決法があれば宜しくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww

2019/01/21 12:37

CORE は必須ですか? (必須だろうとは思ってますが、念のための確認です。.NET なら答えられるので)
ao1101

2019/01/21 13:16

すみません。coreは必須です。 わざわざありがとうございます。
SurferOnWww

2019/01/21 22:52 編集

そうですか・・・ ひょっとしたら、CORE は違うのかもしてませんが、ASP.NET Identity を利用しているなら、ユーザー認証は認証チケットを認証クッキーに入れてサーバー・クライアント間でやり取りするクッキーベースになると思います(ASP.NET の Session は使わない)。Fiddler を使って調べてみてはいかがですか? それに関する詳しい情報が必要でしたら連絡ください。
ao1101

2019/01/21 23:58

ご返信ありがとうございます。 Identityは今のところ使っていないのですが、使ったほうが良いのかもしれないですね。。。 ちょっとそこからやってみようと思います。ありがとうございます。 すみません、Fiddlerでは何を調べたらよいのでしょうか?キャプチャが取れるというのは分かったのですが。。。申し訳ございません。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。