Rails:使用Authlogic进行基本身份validation

我正在使用Authlogic,我想在我的控制器中实现基本HTTP身份validation,以便我可以定义哪个操作需要身份validation。

我知道如何进行基本HTTP身份validationauthenticate_or_request_with_http_basic和before_filter,但我想在其他方面如何使用Authlogic插件实现它。

class ItemsController  [:index, :create] ... end 

这是一个很棒的截屏video ,逐步解释如何在rails项目中使用authlogic。

设置authlogic后,在Application Controller中定义以下有用的与身份validation相关的帮助程序方法。

 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 def require_user unless current_user store_location flash[:notice] = "You must be logged in to access this page" redirect_to new_user_session_url return false end end def require_no_user if current_user store_location flash[:notice] = "You must be logged out to access this page" redirect_to root_url return false end end 

定义这些方法后,您可以指定要求用户登录的操作:

 before_filter :require_user, :only => [:new, :edit] 

我在以下方面取得了成功:

在application_controller.rb中定义filter方法

 def require_http_auth_user authenticate_or_request_with_http_basic do |username, password| if user = User.find_by_login(username) user.valid_password?(password) else false end end end 

然后在您的控制器中,您可以执行以下操作:

  before_filter : require_http_auth_user 

然后你可以使用:

http://用户名:password@yoursite.com (即http基本身份validation)

希望这可以帮助。