0

我正在开发一个新的 rails 3 应用程序。在这个应用程序中,我有 2 种不同类型的资源(管理员车库),它们都有不同的视图和 2 个使用设计的不同登录屏幕。管理员可以创建车库并生成车库密码,车库管理员可以使用该密码登录应用程序。到目前为止,我能够实现这一点。

我在上述实现中面临的一个问题是,车库管理员一旦登录,就能够通过更改浏览器中的 url 来查看管理部分,并且可以像管理员用户一样进行更改。

现在我要实现的是为两个模型提供一个登录/登录表单,当有人登录时,根据他们的模型类型,他们应该被重定向到各自的视图。另外,我想限制除 admin 之外的所有用户使用 admin 部分。

我应该用什么方法来实现这一点。我正在使用设计进行身份验证。

4

1 回答 1

1

resource是您的模型之一的实例:

def after_sign_in_path_for(resource) 
  return admin_route_path  if resource.is_a?(Admin)
  return garage_route_path if resource.is_a?(Garage)
end

resource是此处型号名称的符号:

def after_sign_out_path_for(resource)
  return "/admin" if resource == :admin
  return "/"      if resource == :garage
end

平时进去application_controller.rb


我在上述实现中面临的一个问题是,车库管理员一旦登录,就能够通过更改浏览器中的 url 来查看管理部分,并且可以像管理员用户一样进行更改。

至于这个,这是一个授权问题,而不是一个身份验证问题。尽管您可以在设计中做一些简单的事情来管理它,例如管理标志或类似性质的东西,以便您可以区分两者。仅仅重定向并不能完全解决这个问题。

看看cancan,声明式授权,我相信还有很多其他的。

于 2013-02-17T18:44:17.293 回答