题
我应用程序有用户组成部分和/管理的一部分。有2款帐户(如客户)和管理,我应该账户进行身份验证和管理分开。管理员不应该接入帐户的一部分,并账户不应该接管理的区域。是否有任何解决办法对我或者我应该写的2种不同的应用程序,为用户和管理员和后等待merb同1.1和装载他们以某种方式成1程序?任何想法?
解决方案
你的问题似乎很有趣我说,我有同样的问题,在开始。所以,我可以提出不同的解决方案,从中可以选择一个取决于你的应用程序的结构。
如果所有用户属于一类,但具有特殊的领域(如找=(:客户端、:主持人:管理,等等)。 你会有最低的应用程序的修改,只需要检查的用户类参数在你们的控制/意见。我认为这不是一个好主意。
最好实践--使用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 (这是一个基本的红宝石的方法,以找出类名称的对象)
这里是一些有用的链接:
不隶属于 StackOverflow