`
desert3
  • 浏览: 2158634 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

play secure模块 验证和授权管理

 
阅读更多
参考:http://www.playframework.org/documentation/1.2.3/secure

Play Secure模块放置在play安装目录\modules\secure下,包含在play标准的发布包中。简单的Secure模块被设计用来帮助用户在应用程序中提供验证和授权管理。它提供了一个简单的控制器controllers.Secure,在里面定义了一些拦截器,你能很容易地使用@With注解把这些拦截器加到自己的控制器中。

启用Secure模块:
在/conf/dependencies.yml文件中增加如下内容:
require:
    - play -> secure

导入Secure模块的默认路由:
导入Secure模块的默认路由并不是必须的,用户可以定义自己的路由,也可以混合2者一起使用。
在conf/routes中通过如下命令导入默认的模块路由:
# Import Secure routes
*      /                module:secure

这里被导入的路由内容如下:
# import these default routes as :
# *         /               module:secure
# ~~~~

GET			/login			Secure.login
POST        /login          Secure.authenticate
GET         /logout         Secure.logout

使用拦截器保护controller:
如下使用@With注解来保护控制器(必须验证通过才能使用该控制器)
@With(Secure.class)
public class Application extends Controller {
    
    public static void index() {
        render();
    }
}

自定义验证方法:
默认情况下,登陆页面接受所有的用户名和密码。为了给应用程序增加安全保护,只需要按如下步骤定制下它。
  • 在controllers包下创建一个继承自controllers.Secure.Security的方法
  • 重写authenticate(String username, String password)方法
  • 也可以重写其他方法,如onAuthenticated, onDisconnected来修改应用程序行为

package controllers;
 
public class Security extends Secure.Security {
    
    static boolean authenticate(String username, String password) {
        User user = User.find("byEmail", username).first();
        return user != null && user.password.equals(password);
    }
}

访问验证通过的用户:
使用Security.connected方法来取得验证通过的用户
@With(Secure.class)
public class Application extends Controller {
    
    public static void index() {
        String user = Security.connected();
        render(user);
    }
}

增加授权检查 check注解:
可以使用@check注解来告诉Secure模块,检查当前连接的用户是否有操作控制器、或者其中的方法的权限。
@With(Secure.class)
public class Application extends Controller { 
   …
   
   @Check("isAdmin")
   public static void delete(Long id) {
       …
   }
}

默认情况下,secure模块会一直检查所有checks,你可以通过在自己的Security类中重写方法来修改默认行为。
package controllers;
 
public class Security extends Secure.Security {
    …
    
    static boolean check(String profile) {
        User user = User.find("byEmail", connected()).first();
        if ("isAdmin".equals(profile)) {
            return user.admin;
        }
        else {
            return false;
        }
    }    
}
分享到:
评论

相关推荐

    play2-auth, Play2.x 身份验证和授权模块.zip

    play2-auth, Play2.x 身份验证和授权模块 用于身份验证和授权的 Play2.x MODULE [Gitter](https://badges.gitter.im/Join chat 。svg )!这里 MODULE 为 Play2.x 应用程序提供身份验证和授权功能 Sc

    PlayFramework框架安全模块.pdf

    在Play Framework中,安全模块是一个重要的组件,它帮助开发者实现基本的认证(Authentication)和授权(Authorization)功能,确保应用的安全性。 安全模块Secure module 提供了一个基础的控制器`controllers....

    deadbolt-2, Play Framework的授权模块.zip

    deadbolt-2, Play Framework的授权模块 Deadbolt 2-- 播放 2的授权系统 锁是一种强大的授权机制,用于定义对某些控制器方法或者视图部分的访问权限。有关完整的指南,请参考闩锁网站。GitHub中的deadbolt-2 库是一...

    session配置secure和httpOnly

    在Web开发中,Session和Cookie是两种常见的会话管理机制。Cookie主要负责在客户端和服务器之间传递信息,而Session则是服务器端存储用户状态的一种手段。本文重点讨论的是Cookie中的两个重要属性:`secure`和`...

    Play-Utils是一个专门为PlayFramework开发的实用工具包模块

    Play-Utils 可能包含了对 Play Security 模块的扩展,提供了更高级的认证和授权机制,比如基于 JWT(JSON Web Tokens)的身份验证。 5. **缓存管理**: 为了提高性能,缓存策略是必要的。Play-Utils 可能集成了...

    任务管理系统(基于play框架)

    在Play框架中,可以利用其内置的安全模块,如`play.api.libs.concurrent.Execution.Implicits.defaultContext`和`play.api.data.Forms`来处理表单验证和密码加密。 2. **身份验证与授权**: 注册后,用户需要通过...

    PlayFramework框架验证.pdf

    PlayFramework是一个高性能的Java和Scala框架,它支持Web应用的快速开发,并且主要...通过结合声明式验证规则和自定义验证器,以及支持国际化的错误消息,PlayFramework的验证框架成为了构建可信赖Web应用的重要工具。

    play framework 学生信息管理系统

    10. **安全(Security)**:Play提供了基本的身份验证和授权机制,如`play-authenticate`插件,可以实现用户注册、登录、权限控制等功能。 综上所述,"学生信息管理系统"项目涵盖了Play Framework的基础知识,包括...

    安卓carplay AutoPlayBox_2020.12.04.apk

    安卓车机carplay 配合carplay模块

    deadbolt:Play的授权模块! 框架

    您仍然可以将现有的 Secure 模块与 Deadbolt 一起使用来提供身份验证,并且在身份验证是在您的应用程序之外处理的情况下,您可以将授权机制连接到使用的任何身份验证系统。特征使用AND 、 OR 和NOT组合定义访问在类...

    PlayFramework框架验证[参考].pdf

    Play Framework的验证机制允许开发者在多个层次上对数据进行验证,确保应用程序的数据质量和安全性。它可以轻松地集成到控制器和模型中,提供了丰富的验证规则和自定义验证的能力,使得开发更加高效且可控。通过这些...

    play framework 框架手册 word 版

    13. **模块和依赖管理**:Play支持模块化开发,通过模块仓库可以轻松添加和管理第三方组件。依赖管理通过`dependencies.yml`文件和`play dependencies`命令实现,支持动态版本和冲突解决。 14. **数据库演化**:...

    play框架jar包

    - **安全性和性能**:考虑使用Play的安全模块,如CSRF保护、身份验证,同时注意优化数据库查询和资源加载,提升应用性能。 5. **社区和文档支持** - Play框架拥有活跃的社区和详尽的官方文档,遇到问题时可以查阅...

    play-services-plugins,插件来帮助使用google play服务sdk。.zip

    `play-services-plugins`是Google提供的一个开源项目,旨在帮助开发者更方便地集成和管理Google Play服务的各个部分。下面我们将详细探讨这个项目的各个方面及其相关知识点。 首先,`play-services-plugins`主要由...

    Playframework 1.2.7 sdk zip包 play1.2.7.zip

    - `scripts/`:启动和管理Play应用的脚本。 - `license.txt`:框架的许可证文件,规定了使用权限和条件。 要开始使用Play 1.2.7,首先确保你的系统已安装Java,然后解压此zip包,进入`play-1.2.7`目录,运行`play`...

    Play2.3-Spring-PlayAuthenticate-deadbolt2-and-mongo-with-morphia:该项目是使用 PlayAuthenticate 和 Deadbolt 的身份验证和授权层的多模块示例实现。 Spring 用于依赖注入,但它可以很容易地与 dagger 或 guice 交换。 对于持久性,使用 MongoDB 和 morphia

    该项目是具有身份验证和授权功能的多模块播放应用程序的示例实现。 这附有一篇。 Play 被选为开发此应用程序的主要框架,因为它具有惊人的生态系统、插件和其他好处,例如 Akka、CoffeeScript 支持 Web Sockets 等等...

    play framework api,play! framework api,play api

    8. **状态管理**:Play支持无状态和有状态应用。无状态应用更易于扩展,而有状态应用可以保持用户会话信息。 9. **测试支持**:Play提供内置的测试工具,如FakeRequest和TestServer,方便编写单元测试和集成测试。 ...

    bouncer:Play 的身份验证和授权库! Java 中的框架 2

    #Description 这是一个用于 Play 的 RESTfull 授权和认证库! Java 中的框架 2。 它面向 SPA(单页应用程序)和移动客户端。 授权部分复制 OAuth 2.0 流程。 #Requirements 至少玩 2.3.x #Installation ##...

    play 1.2.5.2

    9. **模块化**:Play框架鼓励模块化开发,开发者可以轻松地添加和替换功能模块,以满足特定项目需求。 10. **广泛的社区支持**:Play拥有活跃的社区,提供大量的第三方模块和丰富的文档,便于开发者解决问题和学习...

    google_play_services最新

    1. **依赖管理**:在AndroidManifest.xml中声明所需的权限和服务,并在build.gradle文件中添加相应的依赖项。 2. **版本控制**:保持对Google Play服务版本的跟踪,确保与应用中其他依赖的一致性。 3. **API使用**:...

Global site tag (gtag.js) - Google Analytics