2017-07-27 56 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层面。

考虑重新构思您的问题更精确

相关问题