2015-01-23 6 views
1

Я использую пакет MVC по умолчанию, с которого вы начинаете, когда вы создаете новый проект. Я добавил этот код к моему сценарию входа, после того как он нажмет кнопку «Отправить», он попытается войти в систему, и это не позволит мне сделать эту работу User.Identity.IsAuthenticated, поэтому я могу скрыть некоторые вещи после того, как он успешно вошли в системуВойти с помощью MVC с помощью SQL

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     // This doesn't count login failures towards account lockout 
     // To enable password failures to trigger account lockout, change to shouldLockout: true 
     using (SqlConnection connection = new SqlConnection("server=server; database=db; user id=user; password=password")) 
     { 
      connection.Open(); 
      using (SqlCommand command = new SqlCommand("SELECT * FROM ACCOUNTS WHERE [UserName] = @param1 AND [PasswordField] = @param2 AND [Active] = 1", connection)) 
      { 
       command.Parameters.Clear(); 
       command.Parameters.AddWithValue("param1", model.UserName); 
       command.Parameters.AddWithValue("param2", model.Password); 
       SqlDataReader adapter = command.ExecuteReader(); 
       if (adapter.Read()) 
       { 
        var user = new ApplicationUser { UserName = model.UserName, Email = model.UserName }; 
        var result = await UserManager.CreateAsync(user, model.Password); 
        if (result.Succeeded) 
        { 
         await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
        } 
       } 
       else 
       { 
        ModelState.AddModelError("", "Invalid login attempt."); 
        return View(model); 
       } 
      } 
      connection.Close(); 
      connection.Dispose(); 
      return RedirectToAction("Index", "Home", "Index"); 
     } 
    } 

Если он вошел в Я хочу сделать что-то вроде

public ActionResult IsAuthenicated() 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     //go to new screen 
    } 
    else 
    { 
     //return back to login screen 
    } 
} 
+0

Какую версию MVC вы используете? Кроме того, есть ли причина, по которой вы хотите реализовать свою собственную систему аутентификации вместо использования чего-то вроде ASPNet Identity? –

+0

@BrendanGreen. Я хотел бы использовать ASPNet Identity, но моя проблема заключается в том, что я не знаю, как связать базу данных с ней, чтобы он мог проверить логин в моей таблице. –

+0

Начните здесь: http://www.asp.net/identity –

ответ

0

Я полагаю, что можно было бы назвать надежным, что означает:. вы, вероятно, может войти

.

С другой стороны, это esn't кажется вообще secure: этот SQL-запрос подразумевает, что вы храните пароль в ящике. По крайней мере, вы должны hash and salt all passwords.

Есть много подключаемых систем auth, таких как членство в ASP.Net (старые сейчас, но все еще работает) или ASP.Net Identity (новый), которые заботятся о вашем тяжелом атлетике.

+0

Что необходимо для полного входа пользователя в систему? У меня, наконец, не осталось никаких исключений или ошибок во время входа в систему, я проверяю свою базу данных, и если это имя пользователя и пароль верны, и если они есть, я добавлю его в список как правильный signinuser и подпишу его. После того, как он вращается вокруг и записывает его. Я нажимаю кнопку, которая требует, если (User.Identity.IsAuthenticated) истинно, и оно не работает. –

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