Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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 on rails 设计重定向到自定义登录页面(常规和管理部分)_Ruby On Rails_Authentication_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails 设计重定向到自定义登录页面(常规和管理部分)

Ruby on rails 设计重定向到自定义登录页面(常规和管理部分),ruby-on-rails,authentication,ruby-on-rails-4,devise,Ruby On Rails,Authentication,Ruby On Rails 4,Devise,我已经用Desive for Authantation系统启动了一个Rails项目。但在我的场景中,还有一个管理部分。因此,管理员和普通用户都使用Desive创建的“用户”模型。我在迁移模型中添加了“is_admin”字段。但这次我有两个主要问题 第一个是,我需要在管理部分有一个登录页面,它将使用Desive的登录方法,如果用户授权并查找“is_admin”字段,将用户重定向到管理页面 第二个是,应该有另一个登录页面的常规网站,人们会看到。这将不会查找“is_admin”字段,而是使用常规的de

我已经用Desive for Authantation系统启动了一个Rails项目。但在我的场景中,还有一个管理部分。因此,管理员和普通用户都使用Desive创建的“用户”模型。我在迁移模型中添加了“is_admin”字段。但这次我有两个主要问题

第一个是,我需要在管理部分有一个登录页面,它将使用Desive的登录方法,如果用户授权并查找“is_admin”字段,将用户重定向到管理页面

第二个是,应该有另一个登录页面的常规网站,人们会看到。这将不会查找“is_admin”字段,而是使用常规的designe登录表单

那么,这些都可以通过设计实现吗


谢谢

在应用程序控制器中放置一个after_sign_In函数,如下所示,该函数将检查用户角色,然后重定向

class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    if resource.is_admin?
      redirect_to admin_path
    else
      redirect_to user_path
    end
  end
end
class ApplicationController
我是否可以检测到用户是否点击了“/admin”,并且我想将用户重定向到管理部分的登录页面?在我的AdminController中,我有“在\u操作之前:验证\u用户!”但它重定向到“/users/sign\u In”。管理员和用户是否都有不同的登录页面?您可以覆盖authenitcate\u用户!函数来检查类似的情况。是的,它们有不同的登录页面。如果用户有“is_admin:true”,我将在管理员登录页面中进行检查,然后将_重定向到管理员面板,如果“false”,则无法访问管理员部分。所以我必须为它写一个助手?我建议你在操作authenitcate用户之前跳过!在管理员控制器中,然后在控制器中编写自定义私有函数,以重定向到管理员登录页面,因为他现在位于指向该控制器的url中。