2011-06-25 154 views
0

我试图使用authlogic,但显然我做错了什么。成功创建用户(在控制台中用User.all验证)后,我会尝试登录,但只能失败。我究竟做错了什么?无法登录使用AuthLogic

此外,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> 

回答

0

我觉得你错误地创建会话。我不是Authlogic大师,但我觉得你supposed to do it like this

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

或者,你可以使用create

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

所有Authlogic构造似乎采取命名参数的哈希(使用通常的Ruby自动hashization),这可能是为什么RubyMine抱怨你的UserSession.new调用具有不正确的参数。

+0

嗨,感谢您的回复;我认为params [:user_session]与明确列出的东西是一样的。让我先试试它。 – Max

+0

RubyMine实际上是说构造函数接受零参数。我想我会忽略那部分。 – Max

+0

没有,仍然无法登录。 – Max