Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在视图中使用if/then是否是合理的安全实践?_Ruby_Security_If Statement_Slim Lang - Fatal编程技术网

Ruby 在视图中使用if/then是否是合理的安全实践?

Ruby 在视图中使用if/then是否是合理的安全实践?,ruby,security,if-statement,slim-lang,Ruby,Security,If Statement,Slim Lang,我猜不会。以下是我想到的情况: form action='/12345/destroy', method='POST' - if @current_user.kind_of? Admin button - else span You cant do that 构建这样一个页面的更好方法是什么?为“负责人”创建一个控制器,并在那里设置按钮?如果管理员选择不允许某些用户使用删除按钮,我们又回到原点了吗?谢谢您的示例对我来说非常好,但这取决于您的需求。如果您认为有一天会需要更

我猜不会。以下是我想到的情况:

form action='/12345/destroy', method='POST'
  - if @current_user.kind_of? Admin
    button
  - else
    span You cant do that

构建这样一个页面的更好方法是什么?为“负责人”创建一个控制器,并在那里设置按钮?如果管理员选择不允许某些用户使用删除按钮,我们又回到原点了吗?谢谢

您的示例对我来说非常好,但这取决于您的需求。如果您认为有一天会需要更多种类的用户,并且担心视图会变得混乱,我建议您查看ACL库。或者,您可以始终滚动您自己的授权层。

您的视图很好,但显然,它并不安全。您必须检查“控制器”(如果有)或该请求的接收端中的权限

而且,这种逻辑可能会在不止一个地方使用。您可以考虑将其提取为辅助方法。

form action='/12345/destroy', method='POST'
  = render_destroy_action_for @current_user
一旦在方法中隐藏了该逻辑,以后就更容易更改