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 < ActiveRecord::Base
acts_as_authentic
end
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, #request, #request_content_type, #responds_to_last_request_update_allowed?, #responds_to_single_access_allowed?, #session, #single_access_allowed?
Constructor Details
#initialize(env) ⇒ RackAdapter
Returns a new instance of RackAdapter.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/authlogic/controller_adapters/rack_adapter.rb', line 40 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 self.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
61 62 63 |
# File 'lib/authlogic/controller_adapters/rack_adapter.rb', line 61 def controller..map { |key, value_hash| { key => value_hash[:value] } }.inject(:merge) || {} end |