在struts应用程序中,我有一个过滤器,强制某些页面只能通过重定向访问https.我正在考虑移植它,所以我的问题是:在这种环境中,是否有一种"提升"方式来实现这样的过滤器,或者它与struts中的相似/相同?谢谢
随着越来越多的人对Scala感兴趣(比如我自己),而不是一个问题,我想讨论一个基于Lift的webapp登录/注销片段的实现.
我刚开始学习Scala和Lift,所以它可能不是实现这样一个功能的最佳方式,但我想与其他初学者分享,并与更有经验的开发人员讨论.请注意,我也不是Web开发方面的专家.任何改进的帮助将不胜感激(特别是性能和安全相关的);-)
1)首先,代码片段需要很容易插入,就像默认模板中的1行代码一样.我已经使用嵌入式 Lift功能完成了它(注意下划线,因此它不能呈现为页面本身,而只是从呈现的页面调用,简而言之,某种"私有"代码段):
<lift:embed what="_logInForm" />
Run Code Online (Sandbox Code Playgroud)
2)然后,在_logInForm.html中,我使用下面的标记和条件显示来处理所有事情:
<div>
<!-- User is not logged in, show a form to log in using the method loggedOut -->
<lift:LogInForm.loggedOut>
<form class="lift:LogInForm.logIn?form=post">
<label for="textName">Username: </label><input type="text" id="textName" name="name" /> <span class="lift:Msg?id=name;errorClass=error"/><br/>
<label for="textPassword">Password: </label><input type="password" id="textPassword" name="password" /> <span class="lift:Msg?id=password;errorClass=error"/><br/>
<input type="submit" value="Log in" />
</form>
</lift:LogInForm.loggedOut>
<!-- User is logged in, show who she is and a way to log out …Run Code Online (Sandbox Code Playgroud) 是否有一个简单的Scala Web框架?我基本上需要基本功能,例如:
我不喜欢Lift,因为它对我来说太过分了,因为我想完全控制生成的HTML,这意味着我希望能够编写100%的HTML/CSS/JS代码.
有这样的框架吗?或者是否可以以不在后台生成HTML 的方式使用Lift ?或者我会更好地编写一个普通的servlet?
我正在使用Scala中的Lift Web框架实现REST服务,并且我在PUT请求中遇到一些问题,以创建一个我知道ID的新实体.
已经将调度添加到Boot.scala我的休息服务对象看起来有点像这样:
package code
package lib
import model._
import net.liftweb._
import common._
import http._
import rest._
import util._
import Helpers._
import json._
object RestService extends RestHelper {
serve( "api" / "room" prefix {
// /api/room returns all the rooms
case Nil JsonGet _ => Room.registredRooms: JValue
// /api/room/count gets the room count
case "count" :: Nil JsonGet _ => JInt(Room.registredRooms.length)
// /api/room/room_id gets the specified room (or a 404)
case Room(room) :: Nil JsonGet _ => …Run Code Online (Sandbox Code Playgroud) 我使用sbt-idea插件创建了一个Lift项目ifor IDEA 11社区版.它从SBT插件SBT控制台编译并运行良好,我也可以通过创建正确的"远程"配置来调试它.
但是如何创建SBT运行配置?
我不想在SBT控制台中每次输入"container:start",我想使用Run/Debug按钮启动.
我无法找到一些SBT配置类型(就像有可用的"Maven"类型),当我尝试添加基于"应用程序类型"的配置时,我无法指定主类.
还没有"Scala Compilation Server"类型可用(我在可用的配置类型列表中看不到它),所以我不能使用这样的解决方案/sf/answers/429221621/
是否有任何具体的应该为"Scala编译服务器"类型显示的操作?或者仅在IDEA的完整版中可用?
更新:我也在为我的项目使用JRebel.如果没有正确的运行配置,我必须通过VM参数使用JRebel运行SBT并通过远程配置进行调试 - 因此每次更新代码时都会重新启动调试器(导致Jrebel重新加载类)而不是单击"使用Jrebel调试"按钮(感谢Jrebel IDEA插件).这很烦人,请帮帮忙!
有一个提升应用程序在Boot.scala中启动ssh守护程序.这是问题:当我container:restart /在sbt会话中运行时,我在使用异常中获得地址.现在有两个问题:
我正在创建一个简单的代码片段,它应该将Box[String]请求user-agent传递给一个helper类,该类传递应该添加到html元素的css类.我这样做是因为让Elev提供html响应与html5boilerplate中的条件注释似乎很棘手.这就是我现在所拥有的并且它有效:
class LiftBoilerplate {
def render = "html [class+]" #> getClassForUserAgent(S.request)
private def getClassForUserAgent(request:Box[Req]) = request match {
case Full(r) => LiftBoilerplateHelper.getHtmlClass(r.userAgent)
case _ => ""
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我想为此编写一个单元测试:
object LiftBoilerplateSpecs extends Specification {
val session = new LiftSession("", randomString(20), Empty)
"LiftBoilerplate" should {
"add 'no-js' to the class of an html tag element" in {
val snippet = new LiftBoilerplate
val result = snippet.render(<html><head></head><body>test</body></html>)
result must ==/(<html class="no-js"><head></head><body>test</body></html>)
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为这个测试失败S.request是Empty.我该怎么做才能为代码段提供一个带有userAgent的模拟请求?
到目前为止,我已经查看了 …
所以,我遇到了一个奇怪的问题,我希望有一些IE专家能够对这种行为有所了解.我的公司运行一个实时的Lift应用程序.我们使用彗星模型在浏览器和服务器之间进行实时通信,这是Lift的标准配置.另外值得注意的是:如果彗星与服务器不同步(由于连接问题或服务器重启,任何会导致服务器上的会话中断的事情)服务器响应该彗星请求,document.location.reload();并重新加载页面,启动一个新的会话,等等.
现在,为了确保注销按预期发生,我们有一个特殊的URL(/ session/logout),可以完成所有与会话相关的清理,然后将您踢回我们的主页.这可以通过单击该URL的锚点来触发,或者如果您尝试执行需要注销的操作,服务器可能会向您发出302该URL.很简单吧?在大多数浏览器中,这很有用,因为工作流看起来像这样:
但是,在IE中我们看到以下行为:
document.location.reload();从服务器接收a ,因为它们从未被IE关闭,主页的加载被中止,并且当前页面在没有用户登录的情况下重新加载.这是完全不合需要的,因为我们需要加载/ session/logout的正确结果 - 特别是在用户尝试执行他们登录时无法执行的操作的情况下(在这种情况下,302从注销将指向他们最初试图去的地方).
以前有没有人遇到过这种问题?关于如何处理这个问题的任何建议?
我正在我的电梯应用程序中开发我的用户类,并开发了两个表单,一个用于用户注册,一个用于用户登录.
我有以下用户类:
class MongoUser private () extends MongoRecord[MongoUser]
with MongoId[MongoUser] {
def meta = MongoUser
object firstname extends StringField(this, "")
object lastname extends StringField(this, "")
object password extends PasswordField(this, "")
object email extends EmailField(this, 90)
object business extends StringField(this, "")
/*
* validation method for checking email is unique
*/
protected def emailUnique(emailVal:String) = {
meta.findAll("email", emailVal) match {
case Nil => Nil
case _ => List(FieldError(email, "Email should be unique"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下两个屏幕:
object SignupWizard extends Wizard { …Run Code Online (Sandbox Code Playgroud) 我有一个使用Lift框架构建的Scala应用。它有一些.conf文件。当我在IntelliJ IDEA Ultimate Fancy Pants Edition中打开这些.conf文件时,看不到任何按钮可以将那些花括号折叠在这些文件中。热键也不这样做。浏览了插件,找不到适用的插件。有什么解决方案可以在.conf文件中启用代码折叠?