Security 更改play框架的Secure.java类

Security 更改play框架的Secure.java类,security,playframework,Security,Playframework,是否建议更改安全类游戏框架的方法? 还是有办法解决这个问题?更好的办法是扩展安全类(正如Zenklys提到的)并覆盖您感兴趣的方法。 检查这个 话虽如此,没有什么可以阻止您修改安全类本身,但您需要确保在每次播放升级时都反映出更改 更新 如果你想拥有自己的登录页面,很简单,只需在应用程序视图文件夹中创建“安全”文件夹,并在其中添加“login.html”验证。i、 e您正在有效覆盖默认的安全模块登录页。Secure.class否安全性。类是 对Secure.class进行更改。不,通常情况下,大多

是否建议更改安全类游戏框架的方法?
还是有办法解决这个问题?

更好的办法是扩展安全类(正如Zenklys提到的)并覆盖您感兴趣的方法。 检查这个 话虽如此,没有什么可以阻止您修改安全类本身,但您需要确保在每次播放升级时都反映出更改

更新


如果你想拥有自己的登录页面,很简单,只需在应用程序视图文件夹中创建“安全”文件夹,并在其中添加“login.html”验证。i、 e您正在有效覆盖默认的安全模块登录页。

Secure.class
<代码>安全性。类

对Secure.class进行更改。不,通常情况下,大多数情况下都可以。但是,您必须扩展
安全性
类。此类中有几个方法必须被重写以适合您的应用程序

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的真正需求之后,这里是解决方案的一部分

  • 创建一个普通的登录页面。您可以通过在
    dependencies.yml
    文件中添加安全依赖项来实现这一点。(同时运行
    播放依赖项
  • 扩展
    安全性
    以覆盖身份验证方法
  • 还可以使用
    redirect()
  • tags
    文件夹中创建一个新标签
    loginbox.html
    。代码粘贴在下面
  • 在主页中使用loginbox标签:
    {loginbox/}
  • 这意味着:

    • 您将在主页上有一个登录框
    • 当用户登录验证时,他们将被重定向到您选择的页面
    • 当用户登录失败时,他们将被重定向到登录页面,并在那里看到错误
    loginbox.html
    #{form@authenticate()}
    登录
    密码
    #{/form}
    
    尽管play建议您扩展安全类(并通过发出play-secure:override--login命令覆盖login.html页面)。。。我更愿意实际修改安全模块本身,因为我不能通过扩展它来做我想做的一切。因此,这里有一个替代解决方案,它对我更有效,并且总体上给我的问题更少。我正在使用play 1.2.4

  • 将“安全”模块文件夹从play framework复制到/modules文件夹(如果有文本文件“安全”,则替换为文本文件)
  • 从dependencies.yml中删除“要求播放->安全”
  • 在application.conf#module.secure=${play.path}/modules/secure中注释掉这一行 (或者将其更改为module.secure=modules/secure,如果不起作用)
  • $play依赖项

  • 好的,但是我如何在登录后重定向到另一个页面作为默认页面呢?方法是重写onAuthenticated方法。另外,默认情况下,它会将您的页面重定向到上次访问的页面或
    /
    .Hmm。。好问题。我会用@Before通知做一些事情——注意,请求中有一个未标记的会话,然后在index()中检查它是否先被取消标记,现在登录,然后重定向。但是我不在办公桌旁,因此文档可能更简单:)这样我就可以简单地在Ovirride-OnAuthenticated()方法中编写重定向(url)?如果用户输入错误的密码或用户名,有没有办法重定向到另一个页面?您试图通过更改它来实现什么?如果它实现了安全模块提供的安全性,那么您只需要扩展它。我想显示我自己的登录页面。因此,我添加了一个呈现(@Application.login);到安全类login()-方法。
    #{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}