对于Web应用程序,当HTTPS不可用作安全措施时,是否仍然可以使登录有点安全?例如:
特别是我正在使用CakePHP和AJAX POST调用来触发身份验证(包括提供的用户名和密码).
问题更新:
我的问题是,浏览器的(IE&FF)自动完成功能不适用于我的登录表单.
我有一个带有CakePHP和jQuery的webapp.允许访问者不显眼地登录/注册.登录表单位于div中,通过AJAX加载.(这样可以在不重新加载页面的情况下登录.)
浏览器会将其识别为登录字段,因为它们会在单击登录时提示我保存凭据.他们确实保存了用户名/密码,因为它们出现在浏览器设置中保存的用户名/密码之间.但永远不会自动输入保存的用户名/密码.页面加载时,它们不会显示为预先输入.当我开始输入用户名时,用户名显示为建议,但即使您选择它,也不会在其旁边输入密码.为什么?我怎样才能使这个工作?
您可以自己测试,这是一个简单的AJAX登录表单:
http://gablog.eu/test/ajaxlogin.html
它加载以下登录表单,如果你转到下面的url,自动完成将只适用于普通表单,所以它不是表单本身的问题,而是它是AJAX加载:http: //gablog.eu /test/loginform.html
布局:
<div id="user-bar">
<script type="text/javascript">
$(function() {
$("#user-bar").load('loginform.html').html();
});
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
加载视图(未登录时):
<form id="form-login" action="" onsubmit="login(); return false;">
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<input type="submit" value="Login"/>
<div id="login-error" class="error-message"></div>
</form>
<script type="text/javascript">
function login() {
$.post('/ajax/login', $("#form-login").serialize(), function(data) {
if (data.success) {
$("#user-bar").load('userbar.html').html();
} else {
$("#login-error").html(data.message);
}
}, "json");
}
</script>
Run Code Online (Sandbox Code Playgroud)
澄清一下:我不想使用AJAX自动完成功能,我希望浏览器的自动完成功能能够用于我的登录表单.这是我的表单和浏览器之间的问题.jQuery提交似乎扮演次要角色,因为用户名/密码已保存.它们不是为加载ajax的HTML元素自动输入的!(测试站点不使用jQuery提交.)相关问题:浏览器自动完成/保存表单在ajax请求中不起作用
Since Google image search API is deprecated, one should use Google custom search API for this.
I've made a small example using it. My problem is I want to return google image search results only. Whereby this shows web results, and the user may switch to the image result. How can I show only the image results by default?
<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1', {language : 'hu'});
google.setOnLoadCallback(function() {
var customSearchOptions = { …Run Code Online (Sandbox Code Playgroud) 即将用Maven + TestNG + Selenium实现测试框架.
如何声明一个告诉TestNG运行所有测试的suite.xml ?我已经尝试了所有这些无济于事:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
<test name="all">
<classes>
<class name="*" />
</classes>
</test>
</suite>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
<test name="all">
<groups>
<run>
<include name="*" />
<exclude name="disabled" />
</run>
</groups>
</test>
</suite>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
<test name="all">
<packages>
<package name="*" />
</packages>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
我需要指定具有不同参数的不同套件配置,但都要运行所有测试.我可以明确地挖掘的每个例子都列出了每个对我来说都不太理智的类或包.
在一个项目中,我们花费了大量精力来解决基本身份验证(因为 webdriver 测试依赖于它,而 webdriver 没有用于基本身份验证的 api),我记得 URL 中的基本身份验证显然不起作用。即无法加载http://username:password@url
只需谷歌“网址中的基本身份验证”,您就会发现很多人在抱怨:https : //medium.com/@lmakarov/say-goodbye-to-urls-with-embedded-credentials-b051f6c7b6a3
https://www.ietf.org/rfc/rfc3986.txt
不推荐在 userinfo 字段中使用“user:password”格式。
今天我把这个泥潭告诉了一个朋友,他说他们在 webdriver 测试中使用http://username:password@url风格的基本身份验证没有任何问题。我将当前的 Chrome v71 转到了一个演示页面,令我惊讶的是,我发现它确实运行良好:https://guest:guest@jigsaw.w3.org/HTTP/Basic/
这怎么可能??我们是否同时生活在平行维度中?哪一个是正确的:使用 URL 中的凭据的基本身份验证是受支持还是已弃用?(或者这可能是由于我找不到任何参考的投诉而重新添加到 Chrome 中的吗?)
我有一个CakePHP 1.3应用程序,并且非常喜欢用于获取数据的Containable行为.
让我们假设我的帖子与评论有一对多的关系.我使用Containable查询(用于分页)所有帖子和所属的注释的列表.但我只对每个帖子有多少评论感兴趣.我没有找到任何方法来实现这个包含可查询的查询而不获取所有注释行.我试过了:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
Run Code Online (Sandbox Code Playgroud)
结果"模型"注释"与模型"计数"错误消息无关.
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
Run Code Online (Sandbox Code Playgroud)
如果不起作用,结果集为每个Post包含一个空的Comment数组,除了最后一个数组,它包含count字段,但是所有注释的数量不仅仅是所属的注释.
我的另一个猜测是
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
Run Code Online (Sandbox Code Playgroud)
但这会导致错误,因为hasMany关系是独立查询的,因此Answer表不在Post条目的查询中.我怎样才能计算帖子的评论数量?
在使用越来越多的JavaScript代码处理更大的Web应用程序时,我们就如何提高代码质量进行了头脑风暴会议.
最初的想法之一是引入单元测试.这将是一个长期目标; 但是,这不会解决最常见的回归原因:更改DOM和浏览器特定问题.
单元测试在模拟的无DOM环境中运行,不在页面上.
我正在寻找的是一个断言框架,可以插入代码中,如下所示:
var $div = $("div.fooBarClass");
assertNotEmpty($div);
$div.fooBarAction();
Run Code Online (Sandbox Code Playgroud)
我发现断言框架可以做到这一点,但它们都可以登录控制台或进入DOM或打开一个愚蠢的弹出窗口.这些都不与(数千个)自动化测试一起工作. 我正在寻找的是一个运行时断言框架,它通过AJAX记录失败的断言!理想情况下,它应该是:
有人可以解释为什么String和Class注释参数的预期不同吗?为什么编译器需要Classes的文字,wherby也接受字符串的常量?
使用Spring的@RequestMapping的工作示例:
public class MyController {
public static final String REQUEST_MAPPING = "/index.html";
@RequestMapping(MyController.REQUEST_MAPPING) // ALL OK!
...
}
Run Code Online (Sandbox Code Playgroud)
使用TestNG的@Test的WTF示例:
public class MyControllerTest {
public static final Class TEST_EXCEPTION = RuntimeException.class;
@Test(expectedExceptions = MyControllerTest.TEST_EXCEPTION) // compilation error, WTF:
// The value for annotation attribute Test.expectedExceptions must be a class literal
...
}
Run Code Online (Sandbox Code Playgroud)
什么工作当然是@Test(expectedExceptions = RuntimeException.class).但为什么?我看到的注释参数的唯一区别是它的类型:String vs Class.为什么Java编译器也接受String常量,但只接受类文字?
当试图让EL条件工作时,我发现枚举值完全被忽略了.这在我看来与规范相反.
<c:out value='${com.foobar.data.BookingStatus.FAILED}' />
<c:out value='${BookingStatus.FAILED}' />
<c:out value='${com.foobar.data.BookingStatus.failed}' />
<c:out value='${BookingStatus.failed}' />
<c:if test="${empty BookingStatus.FAILED }">empty</c:if>
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,这些都评估为空.为什么Enum类不被识别?这发生在当前稳定的Tomcat实例中.
这可能是类路径问题吗?Enum在控制器代码中成功使用,但在JSP中没有其他地方使用.它在部署的lib目录中的jar中提供.
更新:
我的目的是将提供的Integer与Enum的属性进行比较,如下所示:
<c:when test='${bookingInformation.bookingStatus eq BookingStatus.FAILED.code}'>
FOOBARFAIL
</c:when>
Run Code Online (Sandbox Code Playgroud)
不幸的是,被检查的值无法更改,并且仍将是整数.Enum看起来如下(简化):
public enum BookingStatus {
COMPLETED(0), FAILED(1);
private final int code;
private BookingStatus(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
Run Code Online (Sandbox Code Playgroud)
我想避免硬编码FAIL等的Integer值,而是使用enum代替比较.
销毁线程在Java中已弃用(并未根据javadoc实现),并且中断它只是在线程预期退出时的建议,但可能不会这样做.(不提供任何方法来杀死J VM中的线程是一个令人不安的设计,但我的问题与设计无关.)
Java应用程序服务器如何卸载应用程序?他们能以某种方式破坏正在卸载的应用程序的线程吗?如果有,怎么样?如果不是,那么具有无限循环的已部署应用程序的单个线程可能会导致整个应用服务器无法进行干预?
对不起,我不是为此编写测试用例,但我想知道那里到底发生了什么.
我有下面的代码.我想有一个数组(按钮),其中一个元素指向一个函数(closeFlag).
<script type="text/javascript">
var closeFlag = new function() {
alert('Clicked');
}
var buttons = {
'OK': closeFlag
}
</script>
Run Code Online (Sandbox Code Playgroud)
但是,加载页面时会立即弹出警报.构造数组时,JavaScript不会将其用作指针,而是调用我的函数.为什么?我有什么错误,误解?
我正在NetBeans中开发一个CakePHP应用程序,最终设法将它连接到XAMPP调试会话(PHP 5.3.1 w/Xdebug v2.0.6-dev).
它在启动时非常有效,它会在第一行暂停应用程序.
但是我设置的任何进一步断点都被完全忽略了.它不会破裂也不会停顿; 它只是运行完成.
xdebug.extended_info设置为1,我尝试使用赤脚php项目,没有任何框架魔法,并且breakepoints按预期工作.
什么情况?我希望能够在(Cake)PHP中使用断点.
给出XML示例:
<fooRoot>
<bar>
<lol>LOLOLOLOL</lol>
</bar>
<noob>
<boon>
<thisIsIt></thisIsIt>
</boon>
</noob>
</fooRoot>
Run Code Online (Sandbox Code Playgroud)
哪个应该映射到:
class MyFoo {
String lol;
String thisIsIt;
Object somethingUnrelated;
}
Run Code Online (Sandbox Code Playgroud)
约束:
我的梦想解决方案如下:
@XmlMapped
class MyFoo {
@XmlElement("/fooRoot/bar/lol")
String lol;
@XmlElement("/noob/boon/thisIsIt")
String thisIsIt;
@XmlIgnore
Object somethingUnrelated;
}
Run Code Online (Sandbox Code Playgroud)
有什么同样存在吗?我发现要么需要严格的1:1映射(例如JMX,JAXB)或所有字段的手动迭代(例如SAX,Commons Digester).
JiBX绑定定义最接近我正在进行的操作.但是,此工具可用于编组/解组Java对象的完整层次结构.我只想在运行时将XML文档的一部分提取到现有的Java bean中.
java ×5
php ×4
javascript ×3
cakephp ×2
testng ×2
ajax ×1
appserver ×1
assertions ×1
autocomplete ×1
cryptography ×1
el ×1
encryption ×1
enums ×1
html ×1
http ×1
java-ee ×1
jls ×1
jquery ×1
json ×1
jsp ×1
jstl ×1
jvm ×1
maven ×1
model ×1
pagination ×1
security ×1
testing ×1
unit-testing ×1
xdebug ×1
xml ×1
xpath ×1