2016-11-23 51 views
1

我需要博客的簡單身份驗證。對於一個人。只需登錄網站如何在Sinatra中設置驗證?

無法配置sinatra_warden。寫app.rb

require 'rubygems' 
require 'sinatra' 
require 'pry-byebug' 
require "sinatra/activerecord" 
require "carrierwave" 
require "carrierwave/orm/activerecord" 
require 'sinatra_warden' 
require 'warden' 

register Sinatra::Warden 

use Rack::Session::Pool 

,但我得到一個錯誤

NoMethodError: undefined method `register' for main:Object 

寶石sinatra_warden已安裝。以及書面require "warden" & require "sinatra_warden"

sinatra_warden 0.3.2

監獄長1.2.6

當我加入控制器authorize!方法,我得到一個錯誤

undefined method `authorize!' 
+0

顯示討好的完整代碼,您加入這一行。 –

+0

添加到問題 – Andrey

回答

1

因爲你沒」 t使用sinatra/base您應該添加sinatra/namespace。加入你的app.rb這需要require "sinatra/namespace"

Sinatra::Namespace是將名稱空間添加到 應用程序的擴展。這個命名空間將允許您在名稱空間內共享路徑前綴 路由,併爲它們專門定義錯誤處理程序,過濾器,條件和 。除此之外,您還可以使用 註冊助手以及僅在 名稱空間內使用的擴展名。

或更改應用程序的模塊化風格:

require "sinatra/base" 

class MyApp < Sinatra::Base 
    register Sinatra::Warden 

    # The rest of your modular application code goes here... 
end 
+0

在app.rb中添加'require「sinatra/base」'和'class Myapp Andrey

+0

日誌'Sinatra :: Base#選項已被棄用,將被刪除,改爲使用#settings。' – Andrey

+0

@Chumak這是另一個問題)。張貼另一個問題,也許我可以幫助。 –