Rails Routes:带有身份验证块的更清晰的 if 语句

Posted

技术标签:

【中文标题】Rails Routes:带有身份验证块的更清晰的 if 语句【英文标题】:Rails Routes: Cleaner if statement with authenticate block 【发布时间】:2021-08-19 01:21:34 【问题描述】:

有没有更简洁的方法来写这个?喜欢使用 OR 而不是 if 语句?

 if Rails.env.development?
     mount Sidekiq::Web => '/sidekiq'
  else
    authenticate :user, lambda  |u| u.admin?  do
      mount Sidekiq::Web => '/sidekiq'
    end
  end

【问题讨论】:

【参考方案1】:

就可读性而言,这已经是干净易懂的代码了。 你当然可以这样写:

authenticate :user, lambda  |u| Rails.env.development? || u.admin?   do
   mount Sidekiq::Web => '/sidekiq'
end 

与这个较短的符号的唯一区别是您总是调用authenticate 方法。

【讨论】:

我在发布之前尝试过这个,但是在检查开发环境之前会进行身份验证。在开发中,它不需要进行身份验证。

以上是关于Rails Routes:带有身份验证块的更清晰的 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

带有身份验证的 Rails Web 服务???用户登录??

带有rails 3应用程序的ios json身份验证

带有身份验证的 Laravel api 路由

向 iOS 应用程序公开 Rails/Devise 身份验证

如何使用 Laravel API 身份验证返回未授权

Laravel 身份验证过滤器在生产服务器上失败