2017-01-18 9 views
0

現在、MVCを使用して、ユーザーがサイトメニューを参照する前にログイン画面を追加する時点で学習しています。 私の周りGoogleで検索してのみにHomeControllerの上にこれを追加することにより、認証を追加する方法を見つけました:ページを切り替えるとMVCログイン画面が表示され続ける

[Authorize] 

私もweb.configファイルでこれを追加しました:今

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880"/> 
</authentication> 

ログイン作品を、しかし、私はページを変更するとすぐに再度ログインを要求し、最後にアクセスしたページにリダイレクトされません。

ログに記録されたユーザーセッションをMVCに保持する方法はありますか?

EDIT:ログイン用のコード

//Login 
    public ActionResult Login() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Login(UserAccount user) 
    { 
     using (OurDbContext db = new OurDbContext()) 
     { 
      var usr = db.userAccount.Single(u => u.Username == user.Username && user.Password == user.Password); 
      if (usr != null) 
      { 
       Session["UserID"] = usr.UserID.ToString(); 
       Session["Username"] = usr.Username.ToString(); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       ModelState.AddModelError("", "Username or Password is wrong."); 
      } 
     } 
     return View(); 
    } 
    public ActionResult LoggedIn() 
    { 
     if (Session["UserId"] != null) 
     { 
      return View(); 
     } 
     else 
     { 
      return RedirectToAction("Login"); 
     } 
    } 
+0

があなたを表示する場合は、あなたの内側に、現在のセッションのための認証チケットを設定するには、以下の行を追加する必要がありますログインメソッドのコード –

+0

@StephenMuecke Ok – OreoFanatics

+0

の上に追加しました。あなたは 'Session'に詳細を追加しません。そして、あなたは確かにパスワードを平文でデータベースに保存することは決してありません(ハッシュします)。私はあなたがMVCサイトに行き、[セキュリティ、認証と認可](https://www.asp.net/mvc/overview/security)のセクションのチュートリアルで作業することをお勧めします。 –

答えて

0

あなたが(USR = nullを!){}条件

FormsAuthentication.SetAuthCookie(usr.UserID.ToString(), false); 
+0

"FormsAuthenticationが現在のコンテキストに存在しません"というエラーが表示されます。最初に何かをインポートする必要がありますか? – OreoFanatics

+0

「using System.Web.Security」という参照を追加します。 – LKC

+0

ありがとう:)無関係なメモでは、 "userDbEntities"を使用するための参照を知っていますか? – OreoFanatics

関連する問題