我一直在google搜索這一個,沒有打開任何東西有用:Rails的HTTP基本檢查認證?
假設你使用的HTTP基本驗證Rails中有一個簡單的方法來檢查,如果用戶進行身份驗證? IE瀏覽器。一種方法可以做這樣的事情在一個觀點:
- if http_basic_authenticated?
# show admin menu
我一直在google搜索這一個,沒有打開任何東西有用:Rails的HTTP基本檢查認證?
假設你使用的HTTP基本驗證Rails中有一個簡單的方法來檢查,如果用戶進行身份驗證? IE瀏覽器。一種方法可以做這樣的事情在一個觀點:
- if http_basic_authenticated?
# show admin menu
使用訪問會話參數通過您ApplicationController
定義的方法。
class ApplicationController < BaseController
...
def authorize
session[:authorized] = true
end
def http_basic_authenticated?
session[:authorized]
end
def end_session
session[:authorized] = nil
end
end
P.S.我不是安全專家,所以我不能評論在生產環境中使用它的適用性。
由於SSL會話劫持不應該成爲問題,這是我能想到的唯一辦法,這將會受到影響。所以,應該像我正在做的那樣簡單。謝謝! – Andrew
好,因爲我知道,有沒有辦法告訴一個觀點,即請求未通過身份驗證,你能告訴認爲這是認證,但是爲什麼呢? 讓我們看看一個請求的過程:
,並在第二步驟中,將特定的控制器的方法,該方法是前過濾通過認證方法,也就是說,如果你可以去第三步 - 視圖,請求必須是認證。
試試這個:
class ApplicationController < ..
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |username, password|
@authenticated = username == "foo" && password == "bar"
end
end
def authenticated?
@authenticated
end
helper_method :authenticated?
end
現在,您可以在您的視圖中使用authenticated
。
請寫測試!
從oficial code可以提取snipets使用像這樣由ApplicationController中繼承任何控制器:
class ApplicationController < BaseController
...
protected # Only inherited controllers can call authorized?
def authorized?
request.authorization.present? && (request.authorization.split(' ', 2).first == 'Basic')
end
...
end
你試過http://railscasts.com/episodes/82-http-basic-authentication? – cdesrosiers
是的。這並不能讓視圖檢測用戶是否被授權。 – Andrew