使用Devise和Rails Admin验证特定路线 [英] Authenticate using Devise and Rails Admin for particular routes

查看:133
本文介绍了使用Devise和Rails Admin验证特定路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Rails Admin和Devise作为管理员和用户模型。我已经在用户模型中添加了一列admin来表示其身份。在config / routes.rb中,我mount / admin for RailsAdmin:Engine

I use Rails Admin and Devise for admin and user model. I have added one column "admin" to the user model to indicate its identity. In the config/routes.rb, I mount /admin for RailsAdmin:Engine

我只想允许current_user.admin用户访问/管理,否则将用户重定向到

I want to only allow current_user.admin users to access /admin, otherwise, redirect user to home page.

如何在最干净的代码中实现?

How can I implement this in the cleanest code?

推荐答案

在您的管理员控制器上:

on your admin controllers:

class MyAdminController < ApplicationController
  before_filter :authenticate_user!
  before_filter :require_admin
end

在您的应用程序控制器上:

on your application controller:

class ApplicationController < ActionController::Base


  def require_admin
    unless current_user && current_user.role == 'admin'
      flash[:error] = "You are not an admin"
      redirect_to root_path
    end        
  end
end






对不起,没有注意到是用rails管理员,你可以do:


Sorry, didn't notice it was with rails admin, you can do:

# in config/initializer/rails_admin.rb

RailsAdmin.config do |config|
  config.authorize_with do |controller|
    unless current_user.try(:admin?)
      flash[:error] = "You are not an admin"
      redirect_to root_path
    end
  end
end

这篇关于使用Devise和Rails Admin验证特定路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆