2016-11-21 1 views
-4

У меня есть страница с логином, и я делаю это с помощью метода MVC C# ... Я хотел знать, как я проверяю, будут ли введены имя пользователя и пароль, которые я набираю, в базе данных ... Как вы вводите что-либо напечатанное.Как проверить логин в моей базе данных (MVC C#)

**HTML** 
 

 
@model QuestionarioSaude.Model.UsuarioModel 
 

 
@{ 
 
    ViewBag.Title = "Login"; 
 
} 
 

 
<div class="container"> 
 
    <div class="row"> 
 
     <div class="col-md-4 col-md-offset-4"> 
 
      <div class="login-panel panel panel-default"> 
 
       <div class="panel-body"> 
 
       @using (Html.BeginForm("Login", "Login", FormMethod.Post)) 
 
       { 
 
        @Html.AntiForgeryToken() 
 
        @Html.ValidationSummary(true) 
 
        if (@ViewBag.Message != null) 
 
        { 
 
         <div style="border:1px solid red;"> 
 
          @ViewBag.Message 
 
         </div> 
 
        } 
 
        <div class="form-group"> 
 
         @Html.TextBoxFor(a => a.Usuario, new { @placeholder="Digite o seu usuário", @class = "form-control" }) 
 
         @Html.ValidationMessageFor(a => a.Usuario) 
 
        </div> 
 
        <div class="form-group"> 
 
         @Html.PasswordFor(a => a.Senha, new { @placeholder="Digite a sua senha", @class="form-control" }) 
 
         @Html.ValidationMessageFor(a => a.Senha) 
 
        </div> 
 

 
        <input type="submit" class="btn btn-default" value="Entrar" /> 
 
        } 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div> 
 

 
@section scripts{ 
 
    @Scripts.Render("~/bundles/jqueryval") 
 
}

Модель

public class UsuarioModel 
    { 
     public int? IdUser { get; set; } 
     [Required(ErrorMessage = "Digite o usuário", AllowEmptyStrings = false)] 
     public string Usuario { get; set; } 
     [Required(ErrorMessage = "Digite a senha", AllowEmptyStrings = false)] 
     [DataType(System.ComponentModel.DataAnnotations.DataType.Password)] 
     public string Senha { get; set; } 
     public string Perfil { get; set; } 
    } 

Контроллер

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Login(string Usuario, string Senha) 
     { 
      UsuarioModel usuariomodel = new UsuarioModel(); 
      usuariomodel.Usuario = Usuario; 
      usuariomodel.Senha = Senha; 

      if (ModelState.IsValid) //checa se é valido 
      { 
       if (usuariomodel.Usuario != "" && usuariomodel.Senha != "") 
       { 
        UsuarioBLL usuBll = new UsuarioBLL(); 
        usuBll.VerificarUsuario(usuariomodel); 

        Session["UsuarioID"] = usuariomodel.IdUser.ToString(); 
        Session["NomeUsuario"] = usuariomodel.Usuario.ToString(); 

        return RedirectToAction("Index", "Home"); 
       } 
      } 
      return View(); 
     } 

DAL

public bool UsuarioUnico(UsuarioModel usu) 
     { 
      SqlConnection conn = new SqlConnection(this.ConnectionString); 
      conn.Open(); 
      SqlTransaction trans = conn.BeginTransaction(); 
      bool result = false; 

      SqlCommand cmd = conn.CreateCommand(); 
      cmd.CommandText = @"SELECT TOP 1 * FROM USUARIO WHERE USUARIO like @Usuario and SENHA like @Senha"; 
      cmd.CommandType = CommandType.Text; 

      //cmd.Parameters.AddWithValue("@IdUser", usu.IdUser); 
      cmd.Parameters.AddWithValue("@Usuario", usu.Usuario); 
      cmd.Parameters.AddWithValue("@Senha", usu.Senha); 
      //cmd.Parameters.AddWithValue("@Perfil", usu.Perfil); 

      SqlDataReader reader = cmd.ExecuteReader(); 

      if (reader.HasRows) 
      { 
       while (reader.Read()) 
       { 
        Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); 
       } 
      } 
      else 
      { 
       Console.WriteLine("Nenhuma linha encontrada"); 
      } 
      reader.Close(); 

      return result; 
     } 
+2

, что случилось с этим кодом? – McNets

+0

Каким образом код, который у вас уже не работает, как и ожидалось? С какой проблемой вы столкнулись? – David

+0

Вы не проверяете базу данных. Если я ввожу что-либо в поля (html), он входит в систему. Но я просто хочу войти, если у вас есть пользователь в базе данных. Понял? –

ответ

0

Ну, никто не помог мне, и я получил другую помощь, и я получил то, что я хотел ... Спасибо, что не помог мне и все еще уменьшил репутацию вопроса.

Ниже то, что я изменил ...

Контроллер

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Login(UsuarioModel usuariomodel) 
     { 
      if (ModelState.IsValid) //checa se é valido 
      { 
       if (usuariomodel.Usuario != "" && usuariomodel.Senha != "") //se não estiver vazio 
       { 
        UsuarioBLL usuBll = new UsuarioBLL(); 
        var result = usuBll.VerificarUsuario(usuariomodel); 

        if (result) 
        { 
         Session["UsuarioID"] = usuariomodel.IdUser.ToString(); 
         Session["NomeUsuario"] = usuariomodel.Usuario.ToString(); 

         return RedirectToAction("Index", "Home"); 
        } 
       } 
      } 

      ModelState.AddModelError("", "Usuário ou senha incorretos."); 

      return View(); 
     } 

DAL

SqlDataReader reader = cmd.ExecuteReader(); 

      if (reader.HasRows) 
      { 
       result = true; 
      } 
      else 
      { 
       result = false; 
      } 
      reader.Close(); 

      return result; 
0

Вы инициализировать результат в 'usuariounico' в ложном

bool result = false; 

и никогда не менять, так что всегда является ложным.

if (reader.HasRows) 
      { 
       result = true; 
       while (reader.Read()) 
       { 
        Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); 
       } 
      } 

Если есть строка, это означает, что пользователь с этим пользователем и передать, так что результат хорошо

+0

Большое спасибо ... –

+0

Можете ли вы это решить? Если да, то я был бы признателен за то, что вы выбрали его как принятый ответ – DanielGatti

+0

Чувак, он не решался полностью, потому что это было не просто то, что было не так ... Мне удалось очистить его сам. Но спасибо за помощь. –

Смежные вопросы