【问题标题】:Play Framework User Authentication/MembershipPlay Framework 用户认证/会员
【发布时间】:2012-03-14 00:33:15
【问题描述】:

我想在 Play 应用程序中支持用户身份验证。它是 Web 应用程序,我认为内置的“安全”模块对我的需求来说太简单了。事实上,用户组讨论了安全模块如何真正用于演示目的。但是,我该如何开发这样的系统呢?

本质上,该应用程序将允许用户登录,然后他们将拥有自己的设置等应用于整个应用程序。未经身份验证的用户可以查看某些页面,但如果客户端经过身份验证,则这些页面的视图将有所不同。非常简单的设置,但大多数文档只是指简单的安全模块。

【问题讨论】:

  • 我不明白为什么默认的安全模块不能满足您的需求
  • @Ricardo - 这绝对不是唯一的要求。 Secure Module 有一个很好的框架,但是你仍然需要实现 OpenID/Facebook Connect/Password salting。有几个模块做得更多:SecureSocial 和 OpenID 一次,但 SecureSocial 非常新,仍然有点原始,OpenID 太基础了。

标签: authentication playframework


【解决方案1】:

如果您唯一的特殊要求是某些页面是公开可见的,我已经得到您的答案:Play framework: How to require login for some actions, but not all。我只是复制了 Secure 模块并做了一些小的补充。

【讨论】:

    【解决方案2】:

    您可以为此使用 PlayPlugins。我开始编写一个以强大的方式启用安全性的插件。这是从BasisSecurity for Grails 的迁移。目前我没有时间进一步发展。你可以在这里查看当前状态https://code.launchpad.net/~opensource21/+junk/permsec

    【讨论】:

      【解决方案3】:

      根据您的要求,当前的身份验证模块似乎足够了。如果没有,我为我的项目所做的是:

      • 将模块中的类(安全控制器、注释、标签)复制到您的项目中
      • 扩展控制器添加额外的功能

      我没有方便的代码将示例放在这里,但总的来说我:

      • 重命名了类(如果我说一个名字代表另一个名字,请不要记住原来的名字!)
      • 在安全控制器中添加了处理 OpenId 和 OAUth 身份验证的方法
      • 在我的用户模型中添加了支持方法,给定服务的 ID(Google OpenId、Twitter id 等)从数据库返回具有该 ID 的现有用户,或者如果它不存在则创建并返回一个新用户链接到该 ID。
      • 向用户类添加了一些标志(如管理员、主管等)
      • 修改了安全控制器中的检查方法,以便使用用户的标志检查注释的值。类似(伪代码)

        var ok : Boolean = false 好的 = 好的 || (annotation.value == "admin" && currentUser.isadmin) 好的 = 好的 || (annotation.value == "supervisor" && currentUser.issupervisor) ...

      • 在相应的方法中添加注解,并在需要访问检查的类中添加安全控制器(通过@With)

      有了这个我有一个安全的系统,而且它似乎运行得很好(手指交叉:P)

      【讨论】:

        【解决方案4】:

        不知道它是否对您有帮助,但请查看 deadbolt 模块来管理对视图/控制器的访问权限...
        http://www.playframework.org/modules/deadbolt-1.0/home

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 1970-01-01
          • 1970-01-01
          • 2013-11-09
          • 1970-01-01
          相关资源
          最近更新 更多