Play Framework用户身份验证/成员资格

时间:2011-02-27 18:18:00

标签: authentication playframework

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

基本上,应用程序将允许用户登录,然后他们将在整个应用程序中应用自己的设置等。有些页面可供未经身份验证的用户查看,但如果客户端已通过身份验证,则这些页面的视图将不同。非常简单的设置,但大多数文档仅涉及简单的安全模块。

4 个答案:

答案 0 :(得分:4)

如果您唯一的特殊要求是公开显示某些页面,我会得到您的回答:Play framework: How to require login for some actions, but not all。我刚刚复制了安全模块,并做了一些小的补充。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

  • 将类从模块(安全控制器,注释,标记)复制到项目
  • 扩展控制器添加其他功能

我没有把代码放在这里的代码,但总的来说我是:

  • 重命名了这些课程(如果我说一个名字意味着另一个,请不要记住原来的名字,请道歉!)
  • 在Secure Controller中添加了处理OpenId和OAUth身份验证的方法
  • 在我的用户模型中添加了支持方法,给定服务的ID(Google OpenId,Twitter id等)从具有该ID的DB返回现有用户,或者如果它不存在则创建并返回新用户与该身份相关联。
  • 向User class
  • 添加了一些标志(如admin,supervisor等)
  • 修改了安全控制器中的检查方法,因此它使用用户的标志检查注释的值。像(伪代码)

    的东西

    var ok:Boolean = false ok = ok || (annotation.value ==“admin”&& currentUser.isadmin) ok = ok || (annotation.value ==“supervisor”&& currentUser.issupervisor) ...

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

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

答案 3 :(得分:1)

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