我应用程序有用户组成部分和/管理的一部分。有2款帐户(如客户)和管理,我应该账户进行身份验证和管理分开。管理员不应该接入帐户的一部分,并账户不应该接管理的区域。是否有任何解决办法对我或者我应该写的2种不同的应用程序,为用户和管理员和后等待merb同1.1和装载他们以某种方式成1程序?任何想法?

有帮助吗?

解决方案

你的问题似乎很有趣我说,我有同样的问题,在开始。所以,我可以提出不同的解决方案,从中可以选择一个取决于你的应用程序的结构。

  1. 如果所有用户属于一类,但具有特殊的领域(如找=(:客户端、:主持人:管理,等等)。 你会有最低的应用程序的修改,只需要检查的用户类参数在你们的控制/意见。我认为这不是一个好主意。

  2. 最好实践--使用merb同身份验证的战略。这是非常灵活的机制,因此你可以选择的课你想要的工作。

例如,只有2个基本战略:ClientAuth,AdminAuth.他们都将使用不同用户类别(客户、管理).所有你需要的-创建自定义的战略文件,然后将其连接到你的路由器像这样:

authenticate(ClientAuth) do
  match('/profile').to(:controller => ProfileController)
end

authenticate(AdminAuth) do
  match('/admin').to(:controller => AdminController)
end

或者您可以使用身份验证的内部控制器:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth]

  def index
     ... your stuff ...
  end
end

还有,你甚至可以使用的只有一个控制器,用于认证为两类采用两种战略,像这样:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end

只是因为你已经设置不同的身份验证的类(管理、客户)为你的战略你将能够得到的信息有关:session.user.class (这是一个基本的红宝石的方法,以找出类名称的对象)

这里是一些有用的链接:

  1. http://www.slideshare.net/hassox/merb-auth-presentation
  2. http://merbunity.com/tutorials/19
  3. http://www.slideshare.net/carllerche/merb-pluming-the-router-presentation
  4. http://merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html?a=C00000025&name=Strategy
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top