0

我刚刚完成了设置我的应用程序以使用 authlogic完全遵循这一点

在开始之前,我已经创建了一个具有基本 CRUD 功能的产品目录。

现在我希望产品目录只有在用户已经登录时才可以访问。所以,基本上如果用户没有登录,它应该转到登录页面。如果他是,那么 localhost:3000 应该带他到产品目录......我真的很困惑......我什至不知道该怎么做才能注销......

相反,现在,登录并转到 localhost:3000 会将我重定向到 http://localhost:3000/account

请帮忙。

我还注意到,如果我在登录时访问我的产品目录,我会在页面顶部收到此消息

“您必须先登出才能访问此页面”

4

1 回答 1

2

纳乔,我建议你看http://railscasts.com/episodes/160-authlogic

它应该回答你所有的问题,等等。

从我的头顶上...

如果您还没有,请从设置路线开始:

  map.login 'login', :controller => 'user_sessions', :action => 'new'

map.logout '注销', :controller => 'user_sessions', :action => 'destroy'

接下来,在您的应用程序控制器中执行此操作:

  before_filter :authenticate, :except => [:login, :logout, :destroy, :index, :new]

  private #--------------------

  def authenticate
    unless current_user
      flash[:notice] = "You must be loged in first"
      redirect_to(login_url)
      return false
    end
  end

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.record
  end

这应该使您能够解决上述问题。如果人们没有登录,他们将被重定向到登录页面。此外,要注销只需指向 logout_url (localhost:3000/logout)

于 2009-11-10T13:04:11.287 回答