2016-12-01 8 views
0

ログイン機能を実行する方法が安全でないことを理解しています。しかし、私は初心者であるため、最初に深みを深めたくないし、最もシンプルで基本的な方法で最初にやりたいと思っています。MVCでのRavenDBを使用した単純なログイン機能

これまでのところ、私がやった、私は

public class Admin 
{ 
    public string AdminUsername { get; set; } 
    public string Password { get; set; } 
} 

管理モデルを持っている私は、私が登録部分を行っている2つのビューすなわちAdminRegister.cshtmlAdminLogin.cshtml を持っています私はパスワードがDBとパスワードのハッシュに代わりに格納されるべきではないことを知っています。しかし今のところ、基本的な方法でログイン機能を完了したいだけです。

コントローラでそれぞれのアクションメソッドのログインの部分については

public ActionResult AdminRegister(Admin model) 
    { 
     using (var store = new DocumentStore 
     { 
      Url = "http://localhost:8080/", 
      DefaultDatabase = "foodfurydb" 
     }) 
     { 
      store.Initialize(); 

      using (var session = store.OpenSession()) 
      { 
       session.Store(model); 
       session.SaveChanges(); 
      } 
     } 
     return RedirectToAction("Home"); 
    } 

[HttpPost] 
public ActionResult AdminLogin(Admin model) 
    { 
     Admin login = new Admin(); 
     using (var store = new DocumentStore 
     { 
      Url = "http://localhost:8080/", 
      DefaultDatabase = "foodfurydb" 
     }) 
     { 
      store.Initialize(); 

      using (var session = store.OpenSession()) 
      { 
       var adminInput = session 
        .Query<Admin>() 
        .Where(u => u.AdminUsername.Equals(model.AdminUsername) && u.Password.Equals(model.Password)); 

       if (adminInput != null) 
       { 

       } 
      } 
     } 
     return View(); 
    } 

に従うよう、私は、特定のユーザー名とパスワードを持つユーザーがDBに存在するかどうかをチェックするために問い合わせる必要があることを前提としています。そして、私は立ち往生し、ログイン入力とdbからのデータを比較する方法を知らない!誰かが私を導くのに十分親切であれば大丈夫です!しかし、ちょうど単純なもの!どうもありがとうございました。


ユーザーが最初

var count = session 
       .Query<Admin>() 
       .Where(u => u.AdminUsername == model.AdminUsername); 

if (count > 0) 
       { 
        return RedirectToAction("AddRestaurant"); 
       } 
       else 
       { 
        // user exist in db 
        return RedirectToAction("Home"); 
       } 

が存在するかどうかを調べる私は、ログインフィールドにユーザ名がDBに存在するかどうかを調べることができました。はいの場合はログインし、そうでない場合はホームページに残ります。しかし、この段階まで、私はパスワードを確認する方法を知りませんでした。誰かが私をこのことに導くことができればと感謝します。

答えて

0

パスワードをプレーンテキストで完全に保存しないようにしましょう。

まずそのユーザーのドキュメントをロードすることから始めましょう:私たちは結果を持っていますので、実際にクエリを実行するためにFirstOrDefaultを使用してい

var adminInput = session 
    .Query<Admin>() 
    .Where(u => u.AdminUsername == model.AdminUsername) 
    .FirstOrDefault(); 

注意。

次に、ユーザーが存在するかどうかを確認し、存在する場合は番号を比較する必要があります。

これを正しく行う方法については、この記事を参照してください。How to hash a password

関連する問題