2016-09-25 45 views
-1

我是Play Framework的新手。我正在通过创建各种类型的场景来练习(Play + Java)。与数据库链接,使用JPA从数据库中检索数据,主要细节表单,将数据保存到数据库等。用户验证 - Play Framework,Java

我想实现用户认证。用户登录到应用程序。访问应用程序用户必须有权限。

例如:员工 - 添加/编辑/查看/删除。某些用户可能拥有所有授权,部分用户只能查看或添加/编辑/删除或仅编辑。即使在“员工编辑”选项中,用户也只能编辑特定字段Emplyee的名字是不允许的,但员工的地址可以编辑。即现场级授权。

由于

+0

https://github.com/joscha/play-authenticate –

+0

和授权: https://github.com/schaloner/deadbolt-2 – bopa

回答

0
  1. 使用认证控制器来检查用户的登录ID /密码 class AuthController @Inject()(cache: CacheApi, cached: Cached, actorSystem: ActorSystem) extends Controller {

  2. 如果ID /口令是正确的,产生在一个UUID密钥,并且所存储的用户对象(uservo)带有UUID密钥的内存缓存。密钥可以存储在浏览器cookie中。

val cacheTimeout = 10.minutes val key = UUID.randomUUID.toString cache.set(key, uservo, cacheTimeout) Ok().withSession(request.session + ("key" -> key))

  • 我们可以得到下面的HTML请求 “键” 值的cookie。如果可以从内存缓存中检索密钥,则用户可以执行该操作。 记住重新设置cookie的值,或者在内存中缓存缓存uservo将10分钟
  • 后超时

    (request.session.get("key").flatMap { key => cache.get[Uservo](key) } map { uservo => // need to set cache with "key" again, or else the memory will timeout in 10 minutes cache.set(request.session.get("key").get, uservo, cacheTimeout) // do the action.. }).orElse { // failed and return to login home page Some(Future(Redirect("/").withNewSession)) }