下一個RoR的安全教程(here),我寫的東西沿着空的正則表達式匹配紅寶石是什麼?
@@private_re = //
def secure?
action_name =~ @@private_re
end
行的想法是,在基本情況下,這應該不匹配任何,返回nil
。問題是它沒有。我通過使用一個無意義的字符串來解決問題,但我想知道答案。
下一個RoR的安全教程(here),我寫的東西沿着空的正則表達式匹配紅寶石是什麼?
@@private_re = //
def secure?
action_name =~ @@private_re
end
行的想法是,在基本情況下,這應該不匹配任何,返回nil
。問題是它沒有。我通過使用一個無意義的字符串來解決問題,但我想知道答案。
空的正則表達式成功匹配每個字符串。這將永遠失敗的正則表達式的
例子匹配:
/(?=a)b/
/\Zx\A/
/[^\s\S]/
它的目的是不以任何方式更改控制器的行爲,因爲//
會匹配每個字符串。
想法是,@@private
是爲了匹配你想要保密的東西而設置的。因此,該代碼意味着什麼都不做,但是當與控制器中的 @@private = /.../
結合使用時,會爲您提供一個很好的隱私機制。
它可能意味着什麼都不做,但如果在應用程序控制器中逐字使用,則在沒有登錄用戶時會導致重定向循環。正則表達式匹配所有內容,踢你登錄,正則表達式匹配everythign,踢你登錄等。 – kolosy 2010-08-26 17:52:00
/somethingthatwillnevermatch /作品相同,並且更具可讀性:) – kolosy 2010-08-26 17:50:20
@kolosy ...它會匹配文本字符串'somethingthatwillnevermatch':D - 不是那可能是您正在測試的內容...但它可能! :D – 2011-10-10 18:00:42