Sinatra::Warden 未定义的方法“已验证?” nil:NilClass
Sinatra::Warden undefined method `authenticated?' for nil:NilClass
我正在尝试使用 Sinatra_warden 模块对我的 Sinatra Web 应用程序使用身份验证,但是当我指向授权站点时,它显示:
NoMethodError at /admin undefined method `authenticated?' 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!
可能是什么问题?
零错误来自 "sinatra_warden" gem,如果您查看它正在尝试调用 "request.env['warden']",这是零错误,因为:
您必须通过 "use"
为 Sinatra 提供 Warden Manager Rack 中间件
require 'warden'
class App < Sinatra::Base
register Sinatra::Warden
enable :sessions
use Warden::Manager do |manager|
....
完成后,你必须想出一个监狱长 strategy/configure 经理。
举个例子:
https://github.com/sklise/sinatra-warden-example#apprb-cont
似乎 sinatra-warden 保存了一些样板文件(为您提供 HAML 登录路由),但让您自行配置 Warden。
我正在尝试使用 Sinatra_warden 模块对我的 Sinatra Web 应用程序使用身份验证,但是当我指向授权站点时,它显示:
NoMethodError at /admin undefined method `authenticated?' 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!
可能是什么问题?
零错误来自 "sinatra_warden" gem,如果您查看它正在尝试调用 "request.env['warden']",这是零错误,因为:
您必须通过 "use"
为 Sinatra 提供 Warden Manager Rack 中间件require 'warden'
class App < Sinatra::Base
register Sinatra::Warden
enable :sessions
use Warden::Manager do |manager|
....
完成后,你必须想出一个监狱长 strategy/configure 经理。
举个例子: https://github.com/sklise/sinatra-warden-example#apprb-cont
似乎 sinatra-warden 保存了一些样板文件(为您提供 HAML 登录路由),但让您自行配置 Warden。