小编Jer*_*Orr的帖子

在JSP EL表达式中获取Spring Security Principal

我正在使用Spring MVC和Spring Security 3.0.6.RELEASE.在JSP中获取用户名的最简单方法是什么?或者甚至只是用户是否登录?我可以想到几个方面:

1.使用scriptlet

使用这样的scriptlet来确定用户是否已登录:

<%=org.springframework.security.core.context.SecurityContextHolder.getContext()
    .getAuthentication().getPrincipal().equals("anonymousUser")
    ? "false":"true"%>
Run Code Online (Sandbox Code Playgroud)

我不喜欢使用scriptlet,我想在一些<c:if>标签中使用它,这需要将其作为页面属性放回去.

2.使用SecurityContextHolder

我可以再次使用我的SecurityContextHolder @Controller并将其放在模型上.不过,我在每个页面都需要这个,所以我宁愿不必在每个控制器中添加这个逻辑.

我怀疑有一个更清洁的方法来做到这一点......

java spring jsp spring-mvc spring-security

43
推荐指数
7
解决办法
7万
查看次数

使用SHA-512和salt来散列MD5哈希密码?

我正在使用MD5(无盐)散列用户密码的系统.我想使用SHA-512和盐更安全地存储密码.

虽然这很容易实现以后的密码,但我还想改进现有的MD5散列密码,最好不要强迫所有用户更改密码.我的想法是只使用SHA-512和适当的盐来散列现有的MD5哈希值.然后我可以在数据库中设置一些标志,指示哪些密码是从纯文本中散列出来的,哪些是从MD5散列中散列出来的.或者我可以在验证用户时尝试这两种方法.或者甚至只使用MD5和SHA-512/salt散列新密码,这样它们就可以像旧密码一样处理.

以编程方式,我认为这不会是一个问题,但我不知道加密/散列是否足以通过将SHA-512/salt哈希应用于任何方式来破解哈希的质量.已经MD5哈希的密码.我的第一直觉是,如果有的话,它会更强大,一个非常轻的按键伸展.

我的第二直觉是我真的不知道我在说什么,所以我最好得到建议.有什么想法吗?

java security hash sha

9
推荐指数
1
解决办法
2295
查看次数

使用Hibernate一次有效地加载大批量的OneToMany集合

我有一个Parent与实体有@OneToMany关系的Child实体.大多数时候,当我需要一个工作ParentChild实体,我的单亲家庭,工作,所以延迟抓取(FetchMode.SELECT)是合适的.

但是,我遇到的情况是我要查询大量的Parents(有时数百甚至数千),我需要使用它们的Child实体.FetchMode.SELECT给我一个严重的N + 1问题,所以我需要在这种情况下做一些不同的事情.如果我是通过JDBC执行此操作,则是对Parent记录进行单一查询,然后Child使用IN语句(where child.parentid in (?,?,?....))对所有记录进行另一次查询.我需要实时的Hibernate实体,因为Hibernate Search将调用getChildren()作为其索引过程的一部分.

我考虑的选项是:

  1. Criteria.setFetchMode(“children”, FetchMode.JOIN)(或join fetch在HQL中) - 这会给我一个笛卡尔积,但这对许多实体来说是残酷的.
  2. 添加@BatchSizeParent.getChildren()-这将有助于我的大批量的场景,但它是不是真的我想用正常操作的策略.如果我可以在Criteria/HQL中为fetch设置批量大小,那将是完美的,但我找不到这样做的方法.
  3. 使用FetchMode.SUBSELECTParent.getChildren()-很像@BatchSize,这将是非常适合我的大批量的情况,但不适合于正常操作,我不能找到一种方法,与标准使用/ HQL(标准与实体标注使用不同FetchMode枚举,尽管名称重复).

tldr; 我与懒惰的获取模式有一对多的关系,但有时我希望能够一次有效地加载许多实体的关系.

java hibernate

7
推荐指数
0
解决办法
827
查看次数

在Dojo Deferred解决之前,我该如何阻止?

我知道Dojo Deferreds的推荐用例是使用dojo.when(def)或def.then()并为Deferred的解析提供回调.但是,有时候我会遇到各种各样的情况,我真的需要等待延迟完成才能继续当前的线程.这是一个例子(http://jsfiddle.net/DG3Ax/2/上的完整示例)

function getSomething() {
    var def = getSomeDeferred();

    def.then(function(result) {
        dojo.place("<li>def.then() = " + result + "</li>", "output");
    });

    return def.gimmeTheResultNow();
}

dojo.place("<li>getSomething() = " + getSomething() + "</li>", "output");
Run Code Online (Sandbox Code Playgroud)

显然Deferred.gimmeTheResultNow()不存在,但那是我正在寻找的功能.我没有控制调用getSomething()的代码,所以我不能让它处理一个Deferred; 它需要真正的结果.

我知道xhrGet()有一个同步参数,如果这是一个AJAX调用,我认为它会起作用,但情况不一定如此.有没有其他方法可以实现这一目标?

javascript dojo deferred

6
推荐指数
1
解决办法
6275
查看次数

为什么加号需要位于行尾而不是下一行的开头?

在 Kotlin 中,如果您希望加法表达式跨越多行,则需要将加号放在行尾,而不是行首。例如:

var a = 1
var b = 2
var c = 3

var d = a +
    b +
    c

println(d) // prints "6"

var e = a
    + b
    + c

println(e) // prints "1"
Run Code Online (Sandbox Code Playgroud)

据我所知,这是因为 Kotlin 将第二个示例解释为三个单独的语句,如下所示:

var e = a
+ b
+ c
Run Code Online (Sandbox Code Playgroud)

但我还没有找到任何文档来说明为什么+ somevariable它本身就是一个有效的陈述。它不会增加变量,并println(+somevariable)打印与 相同的值println(somevariable)

kotlin

5
推荐指数
1
解决办法
753
查看次数

Express.js-是否有一种方法可以使用带有req,res对象的辅助函数

如何为带有内置req,res对象的路由提供帮助功能。例如 如果我在json中发送了错误或成功消息,则有以下几行代码

    console.log(err)
    data.success = false
    data.type = 'e'
    data.txt = "enter a valid email"
    res.json data
Run Code Online (Sandbox Code Playgroud)

我打算将其放在这样的辅助函数中

global.sendJsonErr = (msg)->
        data.success = false
        data.type = 'e'
        data.txt = msg
        res.json data
Run Code Online (Sandbox Code Playgroud)

但是我在辅助函数中没有res对象,除了传递它之外,我如何获得这些对象。由于将有更多重复的代码出现,所以我想走这条路。它是一种宏,而不是功能模块。谢谢

javascript connect node.js express

3
推荐指数
1
解决办法
1501
查看次数

Video.js应该在没有Flash插件的情况下在IE8中运行吗?

Video.js的主页声明如下(强调我的):

无论用户是使用最新版本的浏览器,还是像Internet Explorer 6这样的古老版本,他们都会获得类似的Video.js体验,体验使用超轻量级Flash播放器来支持不支持HTML5视频的浏览器.

这告诉我,如果我有没有安装Flash插件的IE8实例,这个"超轻量级Flash播放器"应该显示视频.但是,情况似乎并非如此; 当我去http://videojs.com时,我只看到一个黑盒而不是视频.

我是否误解了Video.js嵌入式Flash播放器的用途?或者还有其他事情发生了吗?

更新:我添加了一个屏幕截图,我得到以下无用的JavaScript错误:

消息:m`I0_1363975786212

在此输入图像描述

flash video video.js

1
推荐指数
1
解决办法
1968
查看次数