是否有可用于Scala的OAuth2提供程序,我可以使用Scalatra或Play2 Web框架?
我已经看到了这个答案:Scala/Lift的OAuth 2.0提供程序实现
我正在寻找提供程序库而不是OAuth2.0客户端库.
编辑:
我正在寻找Scala OAuth2.0 Provider:http://tuxdna.in/blog/2014/07/09/oauth2-dot-0-server-using-play-2-dot-0-framework-in-斯卡拉/
我正在尝试Scala Web框架Scalatra.根据这里的文档,启用IntelliJ调试的步骤是:
"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"sbt,运行jetty:start,然后启动远程调试器当我这样做时,SBT打印出来:
Listening for transport dt_socket at address: 5005
和IntelliJ打印:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'
但是,断点似乎不起作用.当我点击以下端点时,断点位于*:
class AppServlet extends AppStack {
get("/break-test") {
* val response = "DONE"
response
}
}
Run Code Online (Sandbox Code Playgroud)
代码不会在该行停止,但会继续,以便我得到响应DONE.
我使用的是Java 1.8.0_111,Scala 2.12和SBT 0.13.15.
具体来说,对于Scalatra项目,但问题可能适用于大多数.
例如,我通常想要运行:
我想通过上下文运行这些子集的不同子集 - 即在简单的代码更改后,我可能只运行前三个; 在签入之前我可能想要运行更大的集合,而持续集成服务器可能具有"快速"和"慢"构建,其具有更大的集合.
基本的sbt文档似乎假设一个"测试"目标 - 是否有推荐的方法来实现这样的多个测试阶段?
以上3个框架如何比较
1)性能2)易用性3)真实世界测试
和其他相关参数?
对于具有RESTful后端的webapp,我使用jquery的$ post将一些json发布到服务器.令我惊讶的是,json被填充在请求的表单数据的参数键中,而不是在请求体中.我可以想到其他一些方法,但问题是为什么它不能像我期望的那样工作.
在服务器上我使用scalatra并打印一些请求信息:
println("Request received:")
println(fromInputStream(request.getInputStream).getLines().mkString)
println("--------------")
println(request.getParameterMap.toString)
println("==============")
Run Code Online (Sandbox Code Playgroud)
现在一个简单的卷曲,我认为是正确的:
curl -X POST http://localhost:8080/x -H "Content-Type: application/json" -d '{"a":"b"}'
Run Code Online (Sandbox Code Playgroud)
生产:
Request received:
{"a":"b"}
-------------
{}
==============
Run Code Online (Sandbox Code Playgroud)
并用html + js来说明问题:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<body>
<button type="button" onclick="doPost()">
POST
</button>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
function doPost() {
$.post("http://localhost:8080/x",
JSON.stringify({"a":"b"} ),
function(data) {});
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
生产:
Request received:
--------------
{{"a":"b"}=[Ljava.lang.String;@7a2897ac}
==============
Run Code Online (Sandbox Code Playgroud)
因此,如果我使用带有字符串化的json字符串和回调的$ post,我会将所有内容填充到单个参数键中.如果这是正常的,我想知道为什么,以及我应该如何在服务器上彻底解开这个问题.如果不正常,我想知道我应该怎么做才能使用$ post在响应体中获取它.
更新:现在有一个jquery的功能请求,以支持$ .post上的contentType
我希望构建一个基于Scalatra的API.其中一项要求是OAuth身份验证.我注意到OAuth的指南尚未在Scalatra官方网站上发布.通过弄清楚如何将基于OAuth的策略添加到Warden中,目前是添加OAuth支持的最佳方式吗?我来自Ruby on Rails的背景,因此很多Scala/Java约定都是新的.可能有几种方法可以解决这个问题,但是我希望有任何解决方案可以在我自己的应用程序中进行实施.
我是一个新手,所以希望有一些耐心.:)
如果某个值不存在,我会尝试填充两个表.基本上我有:
TABLE b
(
id VARCHAR(254) PRIMARY KEY NOT NULL
);
TABLE d
(
id VARCHAR(254) PRIMARY KEY NOT NULL,
relay INT NOT NULL,
FOREIGN KEY ( relay ) REFERENCES b ( id )
);
Run Code Online (Sandbox Code Playgroud)
所以我正在尝试编写一个函数,用一个新值填充两个表,如果它不存在,或者忽略它,否则......当然包含在一个事务中:
IF (NOT EXISTS(SELECT * FROM b where id='something'))
insert into b values('something')
insert into d values(1, 'something')
END
Run Code Online (Sandbox Code Playgroud)
实现这样的目标最有效的方法是什么?如果重要的是我正在使用POstgreSQL 9.1,但我想保持它相当通用.
(编辑)这些是我当前的表格defs(为简化说明而简化):
object d extends Table[(String, String, Int)]("d")
{
def id=column[String]("id", O.PrimaryKey)
def relay=column[Int]("relay")
def relay_ref=foreignKey("d2b.fk", relay, b)(_.id)
def * = id ~ relay …Run Code Online (Sandbox Code Playgroud) 我需要编写一个基于Web的小型UI,它可以运行raspi,因为我试图将一些Scala拉入我的日常工作中,我想使用其中一个Play,Scalatra或者Lift.有没有人有使用这些框架开发Raspberry Pi的经验?如果是这样,哪一个在性能方面更合适?
我有一些案例类定义如下:
sealed trait Breed
case object Beagle extends Breed
case object Mastiff extends Breed
case object Yorkie extends Breed
case class Dog(name: String, breed: Breed)
Run Code Online (Sandbox Code Playgroud)
我还有一个使用Scalatra定义的端点:
post("/dog") {
val dog = parsedBody.extract[Dog]
...
}
Run Code Online (Sandbox Code Playgroud)
我想要这个JSON对象:
{
name: "Spike",
breed: "Mastiff"
}
Run Code Online (Sandbox Code Playgroud)
反序列化到适当的实例Dog.我正在努力弄清楚如何编写自定义反序列化器Breed并将其注册到JSON4S.