小编Igo*_*nov的帖子

Spring Security - 如何启用Method Security注释?

StackOverflow上有很多类似的问题,但我找不到任何答案:(

我有web.xml像:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-security.xml
    </param-value>
</context-param>

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-web.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

并尝试使用注释配置方法安全性.正如我所看到的,必须在我的情况下完成<sec:global-method-security pre-post-annotations="enabled"/>,与其他组件放在相同的上下文中spring-web.xml.所以我有以下内容spring-web.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sec="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/security
          http://www.springframework.org/schema/security/spring-security-3.0.xsd"
        default-autowire="byName">

    <context:component-scan base-package="com.cleanplates.apiserv"/>
    <sec:global-method-security pre-post-annotations="enabled"/>

</beans>
Run Code Online (Sandbox Code Playgroud)

并且spring-security.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sec="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/security
          http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
        <sec:filter-chain-map path-type="ant">
            <sec:filter-chain pattern="/**"
                              filters="
                                usernamePasswordProcessingFilter,
                                rememberMeFilter,
                                anonymousProcessingFilter, …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

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

Project Reactor - 如何按窗口处理结果

我有以下通量:

Flux.range(0, 100)
    .log("before window")
    .window(10)
    .map(Flux::toList)
    .log("after window")
    .map((w) -> {
        System.out.println(w.subscribe().get()));
        return 1;
    }) 
    .reduce(0, (a, b) -> a + b)
    .doOnSuccess(System.out::println)
    .subscribe();
Run Code Online (Sandbox Code Playgroud)

我想doOnNext此刻我应该能够获得物品块。但.get总是因Timeout on Mono blocking read异常而失败。

我从日志中看到,之前都已处理过.window,结果日志给出:

[           main] before window : onNext(0)
[           main] after window  : onNext({ operator : "BufferAll" })
Run Code Online (Sandbox Code Playgroud)

官方文档中没有那么多信息,所以我想我误解了一些东西,并且window错误地使用了函数。但我到底做错了什么?

更新

我发现如果我改用可以避免这个特殊问题.doOnSuccess。喜欢:

.map((w) -> {
    w.doOnSuccess((w2) -> System.out.println(w2))).subscribe();
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

但真正的问题是,在我的情况下,我需要根据对提供的数据(而不是1)的一些计算来返回一个数字。我可以Mono在这里创建一个新的,但无论如何,以后我应该.get这样做。例如在 final 中 …

java spring reactive-programming project-reactor

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

不应用 Gradle 依赖约束

我的 Gradle 配置中有以下内容:

dependencies {    
    implementation "org.slf4j:slf4j-api:1.7.32"
    implementation "org.apache.logging.log4j:log4j-slf4j-impl:2.15.0"
    implementation "org.slf4j:jul-to-slf4j:1.7.32"
    implementation "org.slf4j:jcl-over-slf4j:1.7.32"

    constraints {
        add("implementation", "org.apache.logging.log4j:log4j-core") {
            version {
                strictly("[2.15")
                prefer("2.15.0")
            }
            because("CVE-2021-44228 Log4j 2 Vulnerability")
        }
        add("implementation", "org.apache.logging.log4j:log4j-api") {
            version {
                strictly("[2.15")
                prefer("2.15.0")
            }
            because("CVE-2021-44228 Log4j 2 Vulnerability")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然此配置不直接依赖于 log4j,但它对 log4j 有一些暂时依赖。我预计它将强制使用 2.15.0 或更高版本。

但不幸的是它并没有改变任何东西:

$ gradle dependencies | grep log4j
+--- org.apache.logging.log4j:log4j-slf4j-impl:2.15.0
|    \--- org.apache.logging.log4j:log4j-api:2.15.0 -> 2.13.3
.....
+--- org.apache.logging.log4j:log4j-api:{strictly [2.15; prefer 2.15.0} -> 2.13.3 (c)
\--- org.apache.logging.log4j:log4j-core:{strictly [2.15; prefer 2.15.0} -> 2.13.3 (c) …
Run Code Online (Sandbox Code Playgroud)

java gradle log4j2

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

无法弄清楚如何对谷歌应用引擎进行XMLHttpRequest

我正在尝试从javascript(谷歌浏览器扩展程序)到我的谷歌应用程序进行简单的POST我可以看到HTTP POST确实被发送到GAE服务器,但我无法想象如何传输简单的文本字符串,并在谷歌应用程序中使用它.

目标:使用xmlhttpRequest从javascript发送字符串,在google-app网页上显示此字符串.

这是javascript的代码:

  function onRequest(request, sender, sendResponse) {
    var url = request;
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://myapp.appspot.com");
    xhr.send(url);
    // Return nothing to let the connection be cleaned up.
    sendResponse({});
  };
Run Code Online (Sandbox Code Playgroud)

这是我如何处理服务器端的帖子:

def post(self):
    url1 = str(self.request.get('url1'))
    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write('<p>URL is: %s</p>' % url1)
Run Code Online (Sandbox Code Playgroud)

当我看到POST响应时,我看到了

<p>URL is: </p>
Run Code Online (Sandbox Code Playgroud)

发送的var url在哪里?

javascript ajax google-app-engine google-chrome google-chrome-extension

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

Grails 2.0 PermGem空间与战争

我有一个基本的应用程序,当我grails run-app运行它时工作正常,我想用它来运行它grails run-war.但是java.lang.OutOfMemoryError: PermGem space,在任何请求之后,我总是在开始之后得到着名的tomcat 错误.

嗯,我知道我需要改变PermSize价值,所以我想,我已经在Google上搜寻后发现(所有的方法JAVA_OPTS,GRAILS_OPTS和grails.tomcat.jvmArgs),现在我有以下脚本:

export JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"
export GRAILS_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"
grails -Dgrails.tomcat.jvmArgs="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" run-war
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.仍然有java.lang.OutOfMemoryError: PermGen space第一次请求.

我做错了什么?有没有其他方法可以配置PermSizeGrails 2.0.1?

更新:我跑了ps -ef | grep java,发现Grails实际上得到了我的参数,但后来它运行了一个新的进程,对于tomcat,没有这个参数.

grails tomcat

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

如何在运行集成测试时将Grails作为Web应用程序启动

我正在尝试使用进行http请求的集成测试来测试我的grails应用程序.实际上它是硒/碲测试,但没关系.但正如我所看到的,当我运行grails测试时,它不会启动Web容器,同时我在博客文章中看到很多例子,人们使用selenium和其他需要http访问的测试工具来测试grails app.

我创建了一个空的grails应用程序:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails -DarchetypeArtifactId=grails-maven-archetype -DarchetypeVersion=1.3.4 -DgroupId=example -DartifactId=testportapp

cd testportapp/

mvn initialize

mvn grails:test-app

Tests PASSED - view reports in target/test-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)

没关系.

现在添加一个尝试连接到grails的集成测试test/integration/ListenPortTest.groovy:

class ListenPortTest extends GroovyTestCase {
        void testPort(){
                def s = new Socket("localhost", 8080);
                s.close()
        }        
}
Run Code Online (Sandbox Code Playgroud)

并再次运行测试.现在我们收到以下异常:

Connection refused
   java.net.ConnectException: Connection refused
   ....
Run Code Online (Sandbox Code Playgroud)

我也使用浏览器,wget和netstat检查了它,看起来像grails没有启动或没有打开任何端口.

问题是:在执行集成测试时,如何配置grails来打开端口?

java grails groovy integration-testing

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

IntelliJ GDSL提供了一个jar

我在Maven repo上有一个作为jar发布的库,这个lib为用户对象提供了一些Groovy DSL.是否有可能为这个lib 提供IntelliJ GDSL?

我的意思是,把它放在罐子里面的META-INF或者Maven的里面pom.xml,它会被IntelliJ IDEA自动处理和使用?

有没有什么方法可以为Eclipse做类似的事情?

dsl groovy intellij-idea maven

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

谷歌应用引擎中的memcache

我正在使用python和谷歌应用程序引擎开发的应用程序,但是当我尝试自定义此应用程序时,它在前一代码中给出了编译时错误,该代码在live上正常运行.代码是:

if version in ['beta', 'alpha'] :
            type=version
            version = memcache.get(type)
            if not version:
                v = RouterVersions.get_by_key_name(type)
                if not v : 
                    logging.error('No version found in RouterModel for %s', type)
                    self.error(404)
                    return;

                version = v.version
                memcache.add(v.type, version) 
Run Code Online (Sandbox Code Playgroud)

当我使用memcache.add或获取属性时,它会给出编译时错误"来自import get的未定义变量".我不知道为什么会这样.我是python和谷歌应用引擎的新手.我的应用程序是在python 2.5中创建的,我现在使用的是2.7.这是问题还是其他什么?

python google-app-engine

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

RequireJS忽略了一些路径

我有以下内容main.js:

requirejs.config({
    paths: {
        'backbone': 'backbone-min',
        'underscore': 'underscore-min',
        'loader': 'loader-min'
    }
})
Run Code Online (Sandbox Code Playgroud)

这个'loader-min.js'文件只是一个优化的 js来自loader.js:

define(['backbone', 'underscore'], function () {
})
Run Code Online (Sandbox Code Playgroud)

我的HTML页面包含以下内容:

<script data-main="/js/main" src="/js/require.js"></script>
<script type="text/javascript">
   requirejs(['loader'], function(loader) {
      ....
   })
</script>
Run Code Online (Sandbox Code Playgroud)

顺便说一下,正如我在Firebug控制台上看到的那样,浏览器只跟随网址加载:

GET /js/require.js
GET /js/main.js
GET /js/loader.js !!! Notice it's loader.js, not loader-min.js
GET /js/backbone-min.js
GET /js/underscore-min.js
Run Code Online (Sandbox Code Playgroud)

因此,模块loader尝试加载文件loader.js而不是路径配置的问题main.js.未缩小/优化文件,忽略requirejs.config值.

最奇怪的是,它仍然使用正确值backbone和underscore.大多数情况下,但不是所有时间.有时它加载失败/js/backbone.js

似乎RequireJS在main.js完全加载并由浏览器解释之前就开始工作了.这是预期的行为吗?我的应用程序有什么问题?

我怎样才能确保requirejs(...)只在处理'main.js'之后才执行该功能?

javascript requirejs

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

仅将一个或按钮事件委托给Backbone

我有html内容,如:

<button class="submit">Save</button>
Run Code Online (Sandbox Code Playgroud)

并查看如下:

var MyView = Backbone.View.extend({
 events: {
    'click .submit': 'save'
 },

 save: function() {}
}
Run Code Online (Sandbox Code Playgroud)

当我点击此按钮时,我发现骨干网不会处理此事件,而是进行标准的浏览器操作(至少在Chrome上).<a>标签相同.我的意思是Backbone没有绑定这个标签.

目前我<span>用于按钮,它工作正常,但我想知道为什么我不能使用按钮的标准标签?如何删除标准浏览器事件,并使用骨干<a>或<button>

javascript events backbone.js

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