ruby-on-rails - current_user - gema devise
Rieles: Autenticación básica con Authlogic (2)
Tuve éxito con lo siguiente:
Definir un método de filtro en application_controller.rb
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
Luego, en su controlador puede hacer lo siguiente:
before_filter : require_http_auth_user
Puede usar:
http: // username: [email protected] (es decir, autenticación básica HTTP)
Espero que esto ayude.
Estoy usando Authlogic y me gustaría implementar la Autenticación HTTP básica en mi controlador para poder definir qué acción requiere autenticación.
Sé cómo hacer la Autenticación HTTP básica authenticate_or_request_with_http_basic y before_filter, pero aquí me gustaría saber cómo implementarlo con el complemento Authlogic.
class ItemsController < ApplicationController
before_filter :authenticate , :only => [:index, :create]
...
end
Aquí hay un gran screencast que explica, paso a paso, cómo usar authlogic en su proyecto de rieles.
Una vez que se haya configurado authlogic, defina los siguientes métodos útiles de ayuda relacionados con la autenticación en su Application Controller.
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
Una vez que esos métodos están definidos, puede especificar acciones que requieren que el usuario inicie sesión:
before_filter :require_user, :only => [:new, :edit]