Невозможно войти, используя AuthLogic - PullRequest
0 голосов
/ 25 июня 2011

Я пытаюсь использовать authlogic, но, видимо, я делаю что-то не так.После успешного создания пользователей (проверено с помощью User.all в консоли), я бы попытался войти в систему, но потерпел неудачу.Что я делаю не так?

Кроме того, RubyMine пометил UserSession.new (params [: user_session]) как ошибочный, поскольку у UserSession.new нет параметров. Это просто проблема с RubyMine?

Воткод моей модели


class User < ActiveRecord::Base
  acts_as_authentic do |config|
    config.login_field = :email
  end

  validate :cannot_exceed_100_users

  protected
  def cannot_exceed_100_users
    if User.count > 100
      errors.add_to_base('Cannot have more than 100 users.')
    end
  end
end


class UserSession < Authlogic::Session::Base
  def to_key
    [session_key]
  end
end

Вот мой код контроллера


class UserSessionsController < ApplicationController
  def new
    @user_session = UserSession.new
  end

  def create
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
      logger.info 'success'
      redirect_to games_path
    else
      logger.info 'failed'
      render :action=>'new'
    end
  end

  def destroy
    current_user_session.destroy
    redirect_to new_user_session_path
  end
end

Вот мой код страницы входа в систему


<div>
  <%= form_tag :action=>'create' do %>
    <p>Please Log In</p>

    <div>
      <label for="email">Email:</label>
      <%= text_field_tag :email, params[:email] %>
    </div>

    <div>
      <label for="password">Password</label>
      <%= password_field_tag :password, params[:password] %>
    </div>

    <div>
      <%= submit_tag "Login" %>
    </div>
  <% end %>

  <%= link_to 'register', new_user_path %>
</div>

1 Ответ

0 голосов
/ 25 июня 2011

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

session = UserSession.new(:login => params[:email], :password => params[:password])
session.save

Или вы можете использовать create:

session = UserSession.create(:login => params[:email], :password => params[:password])

Похоже, что все конструкторы Authlogic принимают именованные аргументы в хэше (используя обычное автоматическое хеширование Ruby), поэтому, вероятно, RubyMine жалуется на неправильный аргумент вашего вызова UserSession.new.

...