2009-11-16 44 views
1

我一直努力嘗試更改默認消息,一旦您插入無效的憑據作爲用戶名:密碼在rails上使用authenticate_or_request_with_http_basicRails - authenticate_or_request_with_http_basic自定義「訪問被拒絕」消息

例如,如果我就需要這個認證,一旦我插入錯誤的用戶名和密碼,它返回HTTP Basic: Access denied.

因此,在這種情況下,我想是可以自定義這個消息的方法的捲曲請求使用特定的XML格式的字符串(就像Twitter API一樣)。那可能嗎?

在此先感謝

回答

5

如果你想在登錄提示自定義消息,只是將消息傳遞給方法調用。

authenticate_or_request_with_http_basic "My custom message" do |user_name, password| 
    user_name == USER_NAME && password == PASSWORD 
end 

如果你想定製,最後的錯誤消息,據Rails的2.3.4源代碼,你可以只爲HTTP摘要式身份驗證這一點。

def authentication_request(controller, realm, message = nil) 
    message ||= "HTTP Digest: Access denied.\n" 
    authentication_header(controller, realm) 
    controller.__send__ :render, :text => message, :status => :unauthorized 
end 

基本身份驗證包含硬編碼到該方法中的錯誤消息。

def authentication_request(controller, realm) 
    controller.headers["WWW-Authenticate"] = %(Basic realm="#{realm.gsub(/"/, "")}") 
    controller.__send__ :render, :text => "HTTP Basic: Access denied.\n", :status => :unauthorized 
end 
+0

感謝weppos, 我查過,以前也是如此,但事情是在這種情況下,我使用BCrypt作爲我的密碼加密,所以我不知道我是否可以使用HTTP摘要驗證與它,另一件事是,有沒有什麼辦法可以從http基本覆蓋這個功能?我嘗試過沒有成功,因爲它看起來像Twitter API也使用Http Basic,它們能夠配置最終的錯誤消息,這有點奇怪。 – zanona 2009-11-17 09:34:22

+0

是的,用猴子修補你幾乎可以覆蓋所有的東西......但這並不總是一個好主意。 – 2009-11-17 10:55:51