有时需要扩展框架.有时需要挂钩请求/响应生命周期,例如参数绑定或编写安全模块.怎么可以在playframework 1.x中完成?
我想创建一个没有嵌入式tomcat和maven的war文件.这是我的pom的相关部分
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Add tomcat only if I want to run directly -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
...
Run Code Online (Sandbox Code Playgroud)
如果我运行mvn包我得到一个战争,其中tomcat*.jar在提供的lib文件夹中,但仍然在lib文件夹中.我读了build-tool-plugins-maven-packaging,但找不到什么问题.
我知道一个主要的想法是将其作为一个应用程序运行,我们的客户希望如何将其部署在他的应用程序服务器上.
我尝试为play-framework编写检查,并看到两种不同的可能性.我描述了两者,并想知道我的理解是否正确(所以它更像是一个教程而不是一个问题,特别是因为我没有得到任何我错过的回复).那么存在什么可能性.
Check:AbstractAnnotationCheck.在我们查看实现之前,我想解释一下这些消息.您始终可以直接设置消息,也可以使用密钥在消息属性中引用消息.最后一个是更清洁和推荐的方式.每个验证都至少获得1个参数:属性的名称无效.因此,验证或检查特定参数总是%i$s在i> 1的情况下引用.消息字符串的格式应遵循Formatter的规则,但我不确定是否支持所有功能.据我所知只有%s,%d和%f支持定位.所以%[argument_index$][flags]conversion转换只能是s,d或f.
让我们看看两个例子:我在模块中用于乐观锁定的简单方法:
/**
* Check with proof if the version of the current edited object is lesser
* than the version in db.
* Messagecode: optimisticLocking.modelHasChanged
* Parameter: 1 the request URL.
* Example-Message: The object was changed. <a href="%2$s">Reload</a> and do your changes again.
*
*/
static class OptimisticLockingCheck extends Check {
/**
* {@inheritDoc}
*/
@Override
public boolean …Run Code Online (Sandbox Code Playgroud) 在游戏中,如果从控制器的公共方法调用,则始终遵循Redirect-After-Post-Pattern.在大多数情况下,这是一种很好的行为,但有时它可能是令人讨厌的.所以我试着找出它在play 1.1中是如何工作的!:基本是一些字节码增强,这是在play.classloading.enhancers.ControllersEnhancer.在那里你可以发现仍然存在一些默认行为的例外:
play.mvc,例如Before-annotation.ByPass-Annotation 注释您的操作,此Annotation必须是内部类,因此名称endsWith $ByPass.如果您总是想要抑制重定向,那么这两种解决方案都可以.但是如果你只想在特殊情况下这样做呢?然后你可以打电话ControllerInstrumentation.initActionCall().
我没有找到关于它的描述,我只是分析代码.那么我的结论是正确的还是有任何缺点?
在Github上有一个如何从头开始构建框架的描述.我多么想了解一些事情是如何在内部工作的,所以我想设置Eclipse-IDE以使其尽可能舒适.有没有人描述如何轻松完成这项工作?
为了说清楚,我不想知道如何设置eclipse来处理play-project.
嗨我有一个身份验证服务,它可以处理Request(一些Header-Data和Cookie),Response(设置或删除cookie)和session(存储userId和rememberMe-information).
在播放1.x中很容易伪造请求,响应,Cookie和会话.它可以轻松设置Session.current().set(new Session()).在游戏2.0中,这不再起作用.
如何在请求中添加cookie?我怎么能操纵会话?我看到存在FakeApplication和FakeRequest,但我没有得到它,如何使用它们.
任何提示都表示赞赏.
我有一个关于从自定义配置文件加载属性的问题.我已经尝试了两种不同的方法来加载我的oauth.properties文件,但我无法工作,所以我希望有人可以帮助我.
我尝试的第一种方法是将文件添加到conf目录并因此引用它:
String oauthPropertiesFile = ClassLoader.getSystemResource("oauth.properties").getFile();
Run Code Online (Sandbox Code Playgroud)
但那刚刚回来了NULL.
我尝试的第二种方法是添加:
@include.oauthProperties = oauth.properties
Run Code Online (Sandbox Code Playgroud)
到application.conf文件,然后在我的控制器中引用它,如:
String clientId = oauthProperties.clientId;
Run Code Online (Sandbox Code Playgroud)
但是这不会编译.
任何人都可以解释我在这里做错了什么吗?
对于使用异步API的任何人来说,这都是一个痛苦的熟悉问题:当您的调用遇到故障时,异步库的私有线程会检测到它,创建一个异常对象,并将其传递给您的回调。值得一毛钱的唯一信息就是该消息及其类型。堆栈跟踪毫无价值。
与Google Play报告应用程序崩溃的方式混杂在一起:消息被剥离,而您得到的只是堆栈跟踪。现在,您已一无所有。您只知道您的应用程序存在您在自己的测试中未检测到的错误。
Kotlin的协程至少给我们一些希望,可以将其做得更好。协程堆栈跟踪在概念上在那里,只是很难提取。但是,当前我们获得的堆栈跟踪与我上面描述的相同,没有用。
我熟悉kotlinx-coroutines-debug模块,并且在实现方面有一些规定可以重新创建协程堆栈跟踪,但是如何在用户智能手机上安装的生产应用程序中利用这些功能?
为了理解在Android设备上应该如何保护强大的数据,我想了解哪些攻击是可能的.我开始写下我的知识,并希望得到更正,我错了或我遗失的地方.我首先假设谷歌不是邪恶的,所以将忽略谷歌自己的攻击.
每个应用程序进行签名,并以自己的用户ID运行,因此应用程序只能读取属于他的数据,除了应用程序创建一个公共的存储.此外,使用相同密钥签名的app可以共享数据.如果应用程序想要获得特殊权限,例如阅读或写入日历或联系人,则用户必须接受它.
所以默认情况下它是一个安全的设计.不幸的是,每个系统都存在安全问题,因此系统会损坏.在桌面系统上定期更新是常见的做法.在Android上它取决于供应商,除了Nexus大多是坏的.因此可能存在长期打开的安全漏洞.
那么Android手机怎么会被攻击?
Google可以静默删除和安装应用(链接).如果某人破解了这种机制,攻击者可以在设备上安装任意应用程序.不确定此应用程序是否自动拥有它想拥有的所有权限.直到现在才发生这种情况,但这是可能的.您只能通过定期检查所有已安装的应用和权限来保护您的手机.这种机制可能被黑客滥用.
恶意应用程序可以做很多坏事,但如果你不给每一个应用程序的应用程序想要的权利,并认为一点点,可以保护您的手机.
浏览器或系统中的某些安全漏洞允许应用程序获得root访问权限.在这种情况下,应用程序可以执行它想要的一切.我不知道有任何保护措施.据我所知,android有这样的安全漏洞,所以这是最危险的问题.
总而言之,对数据的唯一安全保护似乎是加密.取决于您的数据必须使用默认密钥或单个密钥(换句话说是密码)的安全性.
我仍然在质疑为什么使用playframework类中的所有字段都应该公开?
class A {
public int a;
public int b;
}
Run Code Online (Sandbox Code Playgroud)
一些简短的解释会很好.
据我所知,如果它们是公开的,那么playframework会为它们使用生成的隐形getter和setter吗?但如果他们是私人的,那么......没有吸气剂和二传手,然后我应该自己写呢?
如果它有效,为什么那么这不再是Java了?我觉得这太简单了.
某些三星Android手机有一个错误,如果插入USB,USB调试会自动打开.这显然是一个安全问题.我想编写一个程序来禁用USB调试,这样我就可以在插入usb-plug时启动它.关于如何做到这一点的任何想法?