【问题标题】:Do I need Devise callback if a CanCan callback is present?如果存在 CanCan 回调,我是否需要设计回调?
【发布时间】:2016-01-25 14:53:48
【问题描述】:

我目前正在保护我的应用程序,以便普通用户无法在 CanCanCan gem 的帮助下创建、编辑、更新或销毁某些对象。我也安装了设计。两种 gem 都提供回调,因此除非满足特定条件,否则用户无法执行某些操作。

class ExampleController < ApplicationController
  before_action :authenticate_user!, except: [:index, :show] # Devise
  load_and_authorize_resource except: [:index, :show] # CanCanCan
end

在这种特殊情况下,只有管理员身份的用户才能拥有完全访问权限。我想知道在控制器中同时存在两个回调是否有点过头了。

我看到的方式是,如果用户不是管理员并且正在尝试创建一个对象,那么就不需要对它们进行身份验证。我想 100% 确定自己的想法,并确保用户不会为了访问这些页面而采取偷偷摸摸的变通办法。

【问题讨论】:

    标签: ruby-on-rails devise callback controller cancan


    【解决方案1】:

    是的,两者都需要。 Devise 回调将保证用户已注册,否则将抛出未经身份验证的错误。 CanCanCan 将保证您的用户有能力进行更改,否则会抛出未经授权的错误。

    知道两者都匹配,但是以后你可能会改变你的能力,然后你不应该改变控制器,最好从一开始就有这个。

    编辑:我忘了提,但是有两个不同的错误可以让你以不同的方式处理它们。例如,要求未经身份验证的用户登录并让未经授权的用户停止干扰您的应用(或直接登录)

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多