更改play框架的Secure.java类

时间:2011-07-12 09:45:53

标签: security playframework

是否建议对Secure类播放框架的方法进行更改? 或者有办法吗?

3 个答案:

答案 0 :(得分:8)

Secure.class Security.class

更改Secure.class。不,通常,在大多数情况下应该没问题。但是,您必须延长Security课程。此类中有几种方法必须重写以适合您的应用程序。

static boolean authenticate(String username, String password);
static boolean check(String profile);
static String connected();
static void onAuthenticated();
static void onDisconnect();
static void onDisconnected();

编辑: 阅读完所有评论并了解Joe的真正需求后,这里是解决方案的一部分。

  1. 创建一个普通的登录页面。您可以通过在dependencies.yml文件中添加安全依赖项来执行此操作。 (也运行play dependencies
  2. 扩展Security以覆盖身份验证方法。
  3. 还使用onAuthenticate覆盖redirect()方法重定向到您选择的页面
  4. loginbox.html文件夹中创建新标记tags。代码粘贴在下面。
  5. 在您的主页中使用loginbox标记:#{loginbox /}
  6. 这意味着:

    • 主页上会有一个登录框。
    • 当用户登录身份验证时,他们将被重定向到您选择的页面。
    • 当用户登录失败时,他们将被重定向到登录页面并在那里看到错误。

    loginbox.html

    #{form @authenticate()}
        <label>Login</label>
        <input type="text" name="username" maxlength="80"/>
    
        <label>Password</label>
        <input type="password" name="password" maxlength="80"/>
    
        <input type="submit" class="rounded" value="Se connecter" />
    #{/form}
    

答案 1 :(得分:5)

最好扩展Security类(如Zenklys所提到的)并覆盖您感兴趣的方法。 检查一下Play Secure document 话虽如此,没有什么能阻止您修改Secure类本身,但是您需要确保在每次Play升级时都反映出这些更改。

更新

如果您想拥有自己的登录页面,那么简单,只需在您的应用程序视图文件夹中创建“安全”文件夹,并在其中添加您的“login.html”版本。即您实际上覆盖了默认的安全模块登录页面。

答案 2 :(得分:0)

虽然play建议你扩展Security类(并通过发出命令play secure:override --login覆盖login.html页面)...我更喜欢实际修改安全模块本身因为我无法做所有事情我希望通过扩展它。所以,这是一个替代解决方案,对我来说效果更好,并且总体上给我的问题少。我正在使用play 1.2.4

  1. 将“安全”模块文件夹从播放框架复制到/ modules文件夹(如果有的话,将文件文件替换为“安全”)
  2. 从dependencies.yml
  3. 中删除“require play - &gt; secure”
  4. 在application.conf#module.secure = $ {play.path} / modules / secure中注释掉这一行 (或者将其更改为module.secure = modules / secure,如果这不起作用)
  5. $ play dependencies