2017-08-09 2 views
0

Ich versuche, die Authentifizierung für meine Sinatra Web-Anwendung mit Sinatra_warden Modul zu verwenden, aber wenn ich an eine autorisierte Stelle darauf hinweisen, heißt es:Sinatra :: Warden undefinierte Methode "authentifiziert?" für nil: NilClass

NoMethodError bei/admin nicht definierte Methode `authentifizierten‘ für nil: NilClass

Hier ist meine app.rb Datei:

require 'sinatra' 
require 'sinatra_warden' 

class App < Sinatra::Base 
    register Sinatra::Warden 
enable :sessions 

    get '/' do 
    erb :index 
    end 

    get '/admin' do 
    authorize!('/login') 
    erb :admin 
    end 

    get '/dashboard' do 
    authorize! 
    erb :dashboard 
    end 
end 

und hier ist meine model.rb Datei, nur für den Fall:

require 'rubygems' 
require 'data_mapper' 
require 'dm-sqlite-adapter' 
require 'bcrypt' 

DataMapper.setup(:default, "sqlite:test.db") 

class User 
    include DataMapper::Resource 

    property :id, Serial, :key => true 
    property :username, String, :length => 3..50 
    property :password, BCryptHash 

end 

DataMapper.finalize 
DataMapper.auto_upgrade! 

Was kann das Problem sein?

Antwort

0

Der Null-Fehler wird von dem „sinatra_warden“ Juwel kommen, wenn Sie es aussehen in versucht „request.env [‚warden‘]“ zu nennen, die Null ist, weil:

Sie haben Sinatra das geben, Warden-Manager Rack-Middleware über „Verwendung“

require 'warden' 

class App < Sinatra::Base 
    register Sinatra::Warden 
    enable :sessions 

    use Warden::Manager do |manager| 

    .... 

Nachdem Sie das tun, müssen Sie kommen mit einer Warden Strategie/Konfiguration der Manager.

Hier ist ein Beispiel: https://github.com/sklise/sinatra-warden-example#apprb-cont

Scheint wie sinatra-warden einige vorformulierten spart (gibt Ihnen HAML Login Routen), sondern überlässt es an Ihnen Warden zu konfigurieren.

Verwandte Themen