1

ユーザーがログインした後、セッションにユーザー情報を保存するASP.NETMVCアプリケーションを作成しました。特別なことは何もありません。単純なアプリケーションです。

最近、この奇妙な動作に気づきました。再構築後の最初の実行では、Sessionが保存されませんでした。そしてそれは一貫しています。

次に例を示します。

  1. ソリューションを再構築する
  2. ログインページを開き、資格情報を入力します
  3. ログインが検証され、ダッシュボードにリダイレクトされますが、ダッシュボードにセッションが見つからないと表示されます
  4. ログインページに戻り、同じクレデンシャルを入力します
  5. ログインが検証され、問題なくダッシュボードにリダイレクトされます

完璧な状況では、検証時にユーザーがログインしていることをアプリケーションにフラグを立てるようにセッションが設定されているため、項目3にエラーが発生することはありません。

ここで何かが足りないのか、それともSessionがどのように機能するのか疑問に思いました。誰かが私のためにいくつかの光を当てることができることを願っています。

[HttpGet]
public ActionResult Index(){
   HttpContext.Session.Remove("UserIn");
   return View();
}
[HttpPost]
public ActionResult Index(string username, string password){
  bool validUser = true;
  if(validUser){
    HttpContext.Session["UserIn"] = username;
  }
  return RedirectToAction("Dashboard");
}

[HttpGet]
public ActionResult Dashboard(){
   if(HttpContext.Session["UserIn"] == null){
     throw new Exception("No session found");
   }
   return View();
}
4

1 に答える 1

-2

フォーム認証を使用し、プリンシパル オブジェクトにユーザー名を保存することを強くお勧めします。

この投稿を確認してください http://mikehadlow.blogspot.com.ar/2008/03/forms-authentication-with-mvc-framework.html

于 2013-01-04T15:35:50.307 に答える