Class: Authlogic::ControllerAdapters::RackAdapter
- Inherits:
-
AbstractAdapter
- Object
- AbstractAdapter
- Authlogic::ControllerAdapters::RackAdapter
- Defined in:
- lib/authlogic/controller_adapters/rack_adapter.rb
Overview
Adapter for authlogic to make it function as a Rack middleware. First you’ll have write your own Rack adapter where you have to set your cookie domain.
class YourRackAdapter < Authlogic::ControllerAdapters::RackAdapter
def
'your_cookie_domain_here.com'
end
end
Next you need to set up a rack middleware like this:
class AuthlogicMiddleware
def initialize(app)
@app = app
end
def call(env)
YourRackAdapter.new(env)
@app.call(env)
end
end
And that is all! Now just load this middleware into rack:
use AuthlogicMiddleware
Authlogic will expect a User and a UserSession object to be present:
class UserSession < Authlogic::Session::Base
# Authlogic options go here
end
class User < ApplicationRecord
acts_as_authentic
end
Constant Summary
Constants inherited from AbstractAdapter
AbstractAdapter::ENV_SESSION_OPTIONS, AbstractAdapter::E_COOKIE_DOMAIN_ADAPTER
Instance Attribute Summary
Attributes inherited from AbstractAdapter
Instance Method Summary collapse
-
#cookies ⇒ Object
Rack Requests stores cookies with not just the value, but also with flags and expire information in the hash.
-
#initialize(env) ⇒ RackAdapter
constructor
A new instance of RackAdapter.
Methods inherited from AbstractAdapter
#authenticate_with_http_basic, #cookie_domain, #last_request_update_allowed?, #params, #renew_session_id, #request, #request_content_type, #respond_to_missing?, #responds_to_single_access_allowed?, #session, #single_access_allowed?
Constructor Details
#initialize(env) ⇒ RackAdapter
Returns a new instance of RackAdapter.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/authlogic/controller_adapters/rack_adapter.rb', line 42 def initialize(env) # We use the Rack::Request object as the controller object. # For this to work, we have to add some glue. request = Rack::Request.new(env) request.instance_eval do def request self end def remote_ip ip end end super(request) Authlogic::Session::Base.controller = self end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Authlogic::ControllerAdapters::AbstractAdapter
Instance Method Details
#cookies ⇒ Object
Rack Requests stores cookies with not just the value, but also with flags and expire information in the hash. Authlogic does not like this, so we drop everything except the cookie value.
64 65 66 67 68 69 |
# File 'lib/authlogic/controller_adapters/rack_adapter.rb', line 64 def controller . .map { |key, value_hash| { key => value_hash[:value] } } .inject(:merge) || {} end |