2013-12-16 3 views
0

Сейчас я пытаюсь аутентифицировать пользователя. Этот процесс работает. Сейчас для входа в систему у пользователя есть имя пользователя и пароль. Если пользователь вводит правильную информацию, он работает. Если пользователь вводит правильное имя пользователя и неверный пароль, он работает. Если пользователь вводит недопустимое имя пользователя, он не работает. Вот мое создать действие в контроллере сессий:rails session issue when invalid user

def create 
    user = User.find_by_username(params[:username]) 
    redirect_to root_url if user == nil 
    if user.password == params[:password] 
     session[:user_id] = user.id 
     redirect_to user_path(user.id), notice: "Logged in!" 
    else 
     flash.now.alert = "not logged in" 
     redirect_to root_url 
    end 
    end 

ошибка, что я получаю то, что нет никакого способа пароля для пользователя. Я знаю, что и поставить в линию

redirect_to root_url if user == nil 

, и я также имел линию

redirect_to root_url unless user.password 

Оба они не работают и не перенаправляет обратно к корневой URL.

+0

форма является формой Войти. Пользователь создается в администраторе. Я просто пытаюсь проверить, является ли это пользователем. Проблема в том, что если имя пользователя не найдено в пользовательском классе пользователя в действии create, оно становится равным нулю. Имея это в виду, я попытался сказать, если пользователь равен нулю, вернитесь к корневому URL-адресу. Эта часть не работает. – user2184718

+1

'if user && user.password == params [: password]' ???? –

+0

вот и все ... спасибо – user2184718

ответ

0

Это должно сделать это

if user && user.password == params[:password]