2017-08-09 3 views
0

私はSinatra_wardenモジュールと私のシナトラのWebアプリケーションの認証を使用しようとしているが、私は認可サイトをポイントすると、それは言う:管理者未定義のメソッド `認証さ/でSinatra ::定義されていないメソッド `authenticated? ' nilのために:NilClass

NoMethodErrorを「? nilのために:NilClassここ

私app.rbファイルされる:ここで

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 

とは、私のmodel.rbファイルは、念のため、次のとおりです。

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! 

何が問題になることができますか?あなたはシナトラ与える必要が

:あなたはそれに見た場合はnilエラーは、「sinatra_warden」宝石から来ている

答えて

0

はので、nilである、「[ 『番人』] request.env」を呼び出そうとしていますあなたがいることを実行した後ウォーデンマネージャーラックミドルウェアは

require 'warden' 

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

    use Warden::Manager do |manager| 

    .... 

を「使用」を介して、あなたは管理者の設定/ウォーデン戦略を考え出す必要があります。

はここに例を示しますhttps://github.com/sklise/sinatra-warden-example#apprb-cont

はシナトラ、監視員は、いくつかの決まり文句を節約できます(あなたのHAMLログインルートを与える)のように思えるが、ウォーデンを構成するためにあなたにそれを任せて。

関連する問題