首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Merb身份验证问题

Merb身份验证问题
EN

Stack Overflow用户
提问于 2009-08-07 07:46:40
回答 1查看 207关注 0票数 0

我的应用程序包含用户部分和/admin部分。有2个模型的帐户(如客户)和管理员,我应该验证帐户和管理员分别。管理员不应该访问帐户的一部分,帐户不应该访问管理区。有没有适合我的解决方案,或者我应该为用户和管理员写两个不同的应用程序,然后等待Merb1.1,然后以某种方式将它们挂载到一个应用程序中?有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-17 03:24:33

你的问题对我来说似乎很有趣,一开始我也遇到过同样的问题。因此,我可以建议不同的解决方案,您可以根据您的应用程序结构从中选择一种。

如果您的所有用户都属于一个类,但具有特殊字段(如UserClass = (:client,:,:admin等),则为admin

  1. 只需检查控制器/视图中的用户类参数,即可完成最少的应用程序修改。我认为这对你来说不是一个好主意。
  2. 的最佳实践--使用Merb身份验证策略。这是一个非常灵活的机制,所以你可以选择你想要使用的类。

例如,你有两个基本的策略: ClientAuth,AdminAuth。它们将使用不同的用户类(Client、Admin)。您所需要的全部-创建自定义策略文件,然后将其连接到路由器,如下所示:

代码语言:javascript
复制
authenticate(ClientAuth) do
  match('/profile').to(:controller => ProfileController)
end

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

或者,您可以在控制器中使用身份验证:

代码语言:javascript
复制
class AdminController
  :before ensure_authenticated, :with => [AdminAuth]

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

此外,您甚至可以使用以下两种策略对这两个类仅使用一个控制器进行身份验证:

代码语言:javascript
复制
class AdminController
  :before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end

因为您已经为您的策略设置了不同的身份验证类(Admin,Client),所以您将能够获得有关它的信息: session.user.class (这是一个基本的ruby方法,用于查找object的类名)

以下是一些有用的链接:

  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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1243479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档