2017-07-27 24 views
0

我是新來的這兩個網站和Rails,我發現這是一個常見的用法把這樣的事情在控制器的開頭:爲什麼使用before_action可以安全使用:authenticate_admin?

before_action :authenticate_admin, only: [:only_admin] 

其中

def authenticate_admin 
    unless current_user.admin? 
    flash[:alert] = "You are not admin!" 
    redirect_to '/' 
    end 
end 

考慮,如果它是可能以某種方式忽略來自客戶端的重定向,我感覺真的不安全。 redirect_to如何實施?爲什麼這個用法能保證安全?

回答

0

redirect_to將很好地終止您當前的HTTP請求,並要求客戶端發起一個新的電話/,這應該是一個公共頁面。你可以重定向到任何你想要的地方。

換句話說,這是一個HTTP重定向。

代碼首先檢查用戶是否是管理員。如果不是,則「警告」該消息並將客戶端重定向到/

如果你問,如果你能忽略通過刪除此調用服務器上的此重定向,你不應該忽視的重定向,否則你只是檢查,如果用戶是管理員,但沒有采取任何行動。實際上,代碼有義務讓客戶去/。假設該URL可以安全地用於非管理員,這是安全的。

如果你問如果客戶端(瀏覽器)是可以忽略重定向 - 這是不可能爲客戶端忽略此重定向; rails會終止連接併發出HTTP重定向,這是瀏覽器不能忽略的,因爲它在HTTP層面。

考慮重新構思您的問題更精確

相關問題