小编mac*_*ery的帖子

OAuth2的客户端JS库如何维护安全身份验证?

我是OAuth2的新手,虽然研究仍然无法掌握,但我一直在努力解决这个问题.

为OAuth2创建JS客户端的难点在于您无法存储客户端密钥,因为它可以在浏览器中广泛访问.即在这个问题中,评价最高的评论说:

"我认为tokenSecret和consumerSekret参数应该是秘密的!下载到浏览器时它们怎么能保密?!!!"

因此,像hello.jsoauth.io这样的客户端OAuth2框架如何解决这个问题呢?我知道他们使用服务器端代理(知道ID和秘密)来处理他们的请求,但是客户端JS代码仍然需要以某种方式告诉代理人它是谁.那么是什么阻止任何人从我的网站上获取JS代码并代表我与代理交谈?

我还找到了适用于JavaScriptGoogle API客户端库.AFAIK那里的客户端代码没有传递秘密.我是否正确理解他们是通过预定义的OAuth响应地址来管理的?(以便始终通过预定义的HTTP地址返回令牌).因此,即使有人试图通过使用我的ID来冒充我的网站,令牌仍将返回我的网站?

也许我在这里混淆了一些不同的主题,关于这个主题的任何亮点都会受到赞赏.

oauth-2.0 google-oauth hello.js

32
推荐指数
2
解决办法
2万
查看次数

Hibernate:如何禁用自动保存脏对象?

我很惊讶地发现Hibernate会在事务结束时自动保存脏对象,而不会显式调用类似的东西

dao.save(object)
Run Code Online (Sandbox Code Playgroud)

我想到了这个线程所描述的情况

我的问题是:有没有办法禁用这种行为?乍一看,这种自动保存看起来相当危险,因为您需要知道哪些对象连接到会话,哪些不是,并且似乎很容易错误地保存.你能告诉我这种自动保存方法的好处是什么?我什么都看不到.我想总是显式调用dao.save(object)来更新任何东西.

我听说过一个可能的解决方法,就是在sessionFactory上使用entityInterceptor.这个自定义entityInterceptor会覆盖findDirty方法,永远不会找到任何脏东西,但在这种情况下,我认为dao.save也不会起作用.有任何想法吗?

hibernate transactions

22
推荐指数
2
解决办法
2万
查看次数

Logstash:如何将文件名添加为字段?

我正在使用Logstash + Elasticsearch + Kibana来概述我的Tomcat日志文件.

对于每个日志条目,我需要知道它来自的文件的名称.我想把它添加为一个字段.有办法吗?我用谷歌搜索了一下,我只发现了这个问题,但答案不再是最新的.

到目前为止,我看到的唯一解决方案是为每个可能的文件名指定单独的配置,使用不同的"add_field",如下所示:

input {
  file {
     type => "catalinalog"
     path => [ "/path/to/my/files/catalina**" ]
     add_field => { "server" => "prod1" }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是每次有新的可能文件名时我都需要重新配置logstash.有更好的想法吗?

logstash

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

为什么IE11"总内存"比堆快照大小大得多?

我正在调查IE下的内存泄漏情况.IE消耗的内存量不断增长,并且增长到1 GB甚至更多......

为了解决这个问题,我开始看一下IE 11 Developer Tools中的"Memory"面板.在那里我看到浏览器的"总内存"从大约300 MB增加到大约1.3 GB(大约20分钟).

但是,我所使用的堆快照只有大约15 MB到大约17 MB: IE 11总内存与堆快照大小.

所以我甚至不想看看它们(因为15 MB与1 GB相比很小).因此我不知道在哪里找到问题的原因.

坦率地说,我的结论是,它是浏览器的内存泄漏而不是页面本身,或者我完全误解了开发人员工具告诉我的内容.实际上,在正式的开发人员工具文档中,所描述的DT用例也显示了"总内存"和堆快照大小之间的巨大差异.如果IE似乎没有显示它的用途,如何调查非堆区域中的错误?

PS顺便说一句:禁用加载项后,行为完全相同.

internet-explorer memory-leaks ie-developer-tools

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

Spring:HibernateTransactionManager处理多个数据源

在下面的代码片段(Spring 3)中:

@Transactional("txManager")
public class DaoHolder {

    @Transactional(value="txManager", readOnly=false, propagation=Propagation.REQUIRES_NEW, rollbackFor={Exception.class})
    private void runTransactionalMethod() throws Exception {
        dao1.insertRow();
        dao2.insertRow();
        //throw new Exception();
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)
  • dao1使用附加到datasource1的会话工厂
  • dao2使用附加到datasource2的会话工厂
  • txManager是一个使用与dao1相同的会话工厂的HibernateTransactionManager

上面的代码以事务方式正常工作 - 特别是,当没有抛出异常时,每个dao操作都被提交(到2个不同的数据源).抛出异常时,每个dao操作都会回滚.

我的问题是:它为什么有效?我读到的任何地方我都被告知在处理多个数据源时使用JtaTransactionManager.我不想使用JTA.如果我让它在HibernateTransactionManager下运行会有什么后果?



感兴趣的更多细节:

每个数据源的定义如下:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="initialSize" value="${jdbc.initial_size}" />
    <property name="maxActive" value="${jdbc.max_active}" />
</bean>
Run Code Online (Sandbox Code Playgroud)

每个会话工厂的定义如下:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingResources">
        <list>
            ... multiple …
Run Code Online (Sandbox Code Playgroud)

spring hibernate transactional multiple-databases

12
推荐指数
1
解决办法
2万
查看次数

NetBeans:nbactions.xml,nb-configuration.xml和catalog.xml应该进入源代码管理吗?

这个线程对于找出Netbeans中的哪些文件应该进入源控制非常有用,但它不包括所有文件.

特别是我想知道以下文件是否应该进入源代码管理.以下是我的假设/猜测:

  • nb-configuration.xml - 最简单 - 评论中的文件本身应该进入源代码管理.

  • nbactions.xml - 从我看到的这个文件存储运行应用程序的典型信息.即JVM参数等.所以我认为这是一个品味问题 - 如果你希望其他开发人员有一个"建议"运行配置 - 包括它.否则 - 不要.正确?

  • catalog.xml - 不确定这是做什么的(我希望编辑器使用它来找出xml架构等,以启用语法着色,但这只是猜测).无论如何 - 我看到这个文件有系统特定的信息(路径) - 所以它不应该进入源代码控制.

任何人都可以确认以上内容 谢谢,

彼得·

version-control netbeans

11
推荐指数
2
解决办法
4587
查看次数

Java中用于高级作业调度的框架是什么?

在我的应用程序中,我需要定期运行后台任务(我可以使用Quartz轻松地完成该任务-即安排要在特定时间定期运行的给定作业)。

但我想多控制一点。特别是我需要:

  1. 让系统重新运行未按计划的时间运行的任务(即服务器已关闭,因此未运行该任务。在这种情况下,我希望“后代”任务尽快运行)
  2. 轻松控制任务会很好-即按需运行任务,或者查看给定任务的最后运行时间,或重新安排给定任务在不同时间运行

在我看来,以上几点可以通过Spring Batch Admin来实现,但是我在这方面还没有很多经验。另外,我已经看到很多关于Spring Batch不是调度工具的文章,所以我开始怀疑这里应该使用哪种合适的工具。

所以我的问题是:以上内容可以通过Spring Batch Admin实现吗?也许Quartz就足够了,但需要配置以完成上述操作?还是我都需要?或者是其他东西?

非常感谢:)彼得

java scheduling quartz-scheduler spring-batch-admin

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

如何模拟ajax请求的浏览器超时?

我正在尝试保护我的Web应用程序免受ajax请求的超时.要做到这一点,我显然需要模拟这样的超时.

从我在这里找到的:http: //kb.mozillazine.org/Network.http.connect.timeout#Background firefox超时是系统相关的,我在这里找到了:http://support.microsoft .com/kb/181050默认情况下,IE超时时间为60分钟.

所以我看到以下模拟超时的方法:

  • 让服务器等待60分钟(哎呀;))
  • 将IE超时时间更改为更小的值(这需要更改注册表)
  • 在客户端和服务器之间配置代理并使其超时

以上所有方式对我来说都是一种矫枉过正.有没有人知道一种更简单的方法(可能在不同的浏览器上)?谢谢!

ajax timeout

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

StringTemplate:在生成Javascript数组时跳过尾随昏迷

我在StringTemplate 4中生成了一个Javascript数组,但我在跳过最后一个元素之后的尾随昏迷时遇到了麻烦.每个项目都是使用模板生成的,然后我想用comas将它们分开,以便在表单中创建一个数组:

[ item1, item2, item3, item4 ]
Run Code Online (Sandbox Code Playgroud)

目前,我生成此阵列的最佳方法是:

array(elems) ::= <<
  [ 
    $first(elems):elem_noComa()$
    $rest(elems):elem()$
  ]
>>

elem_noComa(el) ::= <<  { ...element generation... } >>

elem(el) ::= <<
  , $elem_noComa(el)$
>>
Run Code Online (Sandbox Code Playgroud)

有没有办法更容易/更短的形式?

stringtemplate stringtemplate-4

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

使用PostgreSQL的Npgsql:使用UNCOMMITTED READ无法看到未提交的更改

我正在使用Npsql和PostgreSQL.我想在另一个事务中看到一个事务的未提交更改.

这是我创建连接和事务的方式:

// create connection
m_Connection = new NpgsqlConnection(connectionString);
m_Connection.Open();

//create transaction
m_Transaction = m_Connection.BeginTransaction(IsolationLevel.ReadUncommitted);
Run Code Online (Sandbox Code Playgroud)

在一个线程中,我插入一行,如下所示:

 NpgsqlCommand command = CreateCommand("INSERT INTO TABLEA  ....", parameters, commandTimeout)
 command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

并且在不提交或回滚交易的情况下处理其他内容.

在另一个线程中,我读了一行,如下所示:

 NpgsqlCommand command = CreateCommand("SELECT COUNT(*) FROM TABLEA", parameters, commandTimeout);
 command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

但不知怎的,我没有看到第一个INSERT的结果.我也没有在pgAdmin中看到插入的结果(即使在运行SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED之后).

我究竟做错了什么?任何帮助将不胜感激.

postgresql npgsql

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

什么时候可以将日期时间存储为本地时间而不是 UTC?

这是一个与this 类似的问题。

我真的很想在我的应用程序中将日期时间存储为本地时间而不是 UTC(这被认为是最佳实践)。在应用程序中,我发生了许多事件,每个事件都分配给给定的位置。当我向用户显示它们时,我总是想显示事件的当地时间。IE:

====================================================================================
Event time (with TZ)   | As UTC           | As local time    | To be displayed  |
====================================================================================
2014-01-15 22:30 GMT   | 2014-01-15 22:30 | 2014-01-15 22:30 | 2014-01-15 22:30 |
2014-01-15 23:30 GMT+1 | 2014-01-15 22:30 | 2014-01-15 23:30 | 2014-01-15 23:30 |
2014-01-16 00:30 GMT+2 | 2014-01-15 22:30 | 2014-01-16 00:30 | 2014-01-16 00:30 |
====================================================================================
Run Code Online (Sandbox Code Playgroud)

如果我决定以 UTC 格式存储事件时间:

  • 显示它们将很困难(因为对于每个事件,我都需要该事件的时区并格式化该时区的日期)。

  • 查询它们将非常困难(即,如果我想显示当地时间 2014-01-15 发生的所有事件,我需要每个事件将该事件的时间与该事件中“2014-01-15”的含义进行比较时区。不确定这在 SQL 中是否可能......)

如果我决定将事件时间存储为当地时间:

  • 我将无法比较不同地点的活动时间(但这对我来说没问题)

由于在应用程序中的绝大多数情况下,我对当地时间(通常显示所谓的“电视时间”)感兴趣,并且没有很多情况我创建新的日期时间对象(为此我需要位置时区),我相信在这种情况下将日期时间保存为当地时间是合理的。

你认为是吗?存储当地时间还有哪些其他缺点?

预先感谢您的关注和帮助。

time timezone datetime utc dst

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