2012-02-23 32 views
2

是否有可能以某种方式覆盖安全模块的Play.java类的登录方法!框架,以便显示另一个版本的登录表单?在Secure class Play中渲染移动版登录!框架

在我的情况下,如果检测到移动浏览器,我想显示移动版的登录表单。

我知道我不应该改变Secure.java类本身,但我实在看不出任何其他办法解决这个问题。

+0

你为什么不被允许更改Secure.java类?如果这就是你的应用程序需要的,那就去做吧。安全模块毕竟是相当简单的,它不可能处理所有不同的情况。劈开:) – Tommi 2012-02-23 12:47:12

+0

问题是我和一些同事一起工作,并且这些更改不会上传到svn(因为安全是一个模块=不在svn上)。我现在只需将登录和身份验证方法复制到我的安全类中,然后根据我的移动需求进行修改即可解决此问题。 – ruptha 2012-02-23 13:03:49

回答

3

正如在其他讨论posts你在你玩的request!控制器。因此,在这个要求,你可以问哪个代理试图查看网站:

String agentInfo = request.headers.get("user-agent"); 

的,你可以决定哪些模板将被渲染为这个代理:

if (agentType.isWhatEverHeIs) { 
    renderTemplate("Application\mobileTemplateForBadPractise.html"); 
} else { 
    render(); 
} 

但我会鼓励你做的是responsive webdevelopment。尽可能聪明地创建你的模板,让模板和css和javascript做到这一点,并保持你的业务逻辑在你的控制器中。

您可以使用Twitter Bootstrap来实现这一点,但还有更多!像Skeleton

你甚至得到了request对象里面你的模板,让你可以根据试剂可选地呈现在你的模板的东西(或没有)。

0

就更简单了,只需创建/覆盖secure/login.html模板,并使用响应式设计:媒体查询。无需更改控制器或检查代理或其他任何东西。