我的应用程序包含用户部分和/admin部分。有2个模型的帐户(如客户)和管理员,我应该验证帐户和管理员分别。管理员不应该访问帐户的一部分,帐户不应该访问管理区。有没有适合我的解决方案,或者我应该为用户和管理员写两个不同的应用程序,然后等待Merb1.1,然后以某种方式将它们挂载到一个应用程序中?有什么想法吗?
发布于 2009-08-17 03:24:33
你的问题对我来说似乎很有趣,一开始我也遇到过同样的问题。因此,我可以建议不同的解决方案,您可以根据您的应用程序结构从中选择一种。
如果您的所有用户都属于一个类,但具有特殊字段(如UserClass = (:client,:,:admin等),则为admin
例如,你有两个基本的策略: ClientAuth,AdminAuth。它们将使用不同的用户类(Client、Admin)。您所需要的全部-创建自定义策略文件,然后将其连接到路由器,如下所示:
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因为您已经为您的策略设置了不同的身份验证类(Admin,Client),所以您将能够获得有关它的信息: session.user.class (这是一个基本的ruby方法,用于查找object的类名)
以下是一些有用的链接:
https://stackoverflow.com/questions/1243479
复制相似问题