Rack::Authentication
A modular implementation of Rack::Auth
Installation
Add this line to your application's Gemfile:
gem 'rack-authentication'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rack-authentication
Usage
require "rack/authentication"
require "rack/authentication/adapters/basic"
class App < Sinatra::Base
use Rack::Authentication do |config|
config.realm "My App"
config.adapter Rack::Authentication::Adapters::Basic
end
end
Want to make your own custom authentication adapter?
Just inherit from Rack::Authentication::Adapters::Base
. Three methods wil be defined
for you:
type
- The type of authentication (eg: Basic, Bearer)env
- The rack app's environmentcredentials
- The username/password of the request. This will always be an array
You're required to define good?
and authorized?
.
# my_adapter.rb
class MyAdapter < Rack::Authentication::Adapters::Base
def good?
"Basic" == type
end
def
User.exists?(username: credentials[0], password: credentials[1])
end
end
# app.rb
class App < Sinatra::Base
use Rack::Authentication do |config|
config.realm "My App"
config.adapter MyAdapter
end
end
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request