小编fas*_*ser的帖子

Spring使用注释从一个类创建两个bean

我可以使用以下代码使用xml配置从一个java类中的两个bean创建:

    <context:component-scan base-package="some.package"/>

    <bean id="dependentBean" class="some.package.DependentBean">
        <property name="firstBean" ref="firstBean"/>
    </bean>

    <bean id="firstBean" class="some.package.Handler">
        <constructor-arg index="0" ref="service"></constructor-arg>
        <property name="defaultUrl" value="url/first"></property>
    </bean>

    <bean id="secondBean" class="some.package.Handler">
        <constructor-arg index="0" ref="service"></constructor-arg>
        <property name="defaultUrl" value="url/second"></property>
    </bean> 
Run Code Online (Sandbox Code Playgroud)

我的目标是将firstBean和secondBean移动到基于java的配置,如下所示:

package some.package;

@Configuration
public class Configuration {

    @Bean(name="firstBean")
    public Handler firstHandler(Service service){
        Handler handler= new Handler(service);
        handler.setDefaultTargetUrl("url/first");
        return handler;
    }


    @Bean(name="secondBean")
    public Handler secondHandler(Service service){
        Handler handler = new Handler(service);
        handler.setDefaultTargetUrl("url/second");
        return handler;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当上下文开始加载时,spring会抛出以下异常:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'firstBean' is defined
Run Code Online (Sandbox Code Playgroud)

然而,它适用于这种情况:

package some.package;

    @Component …
Run Code Online (Sandbox Code Playgroud)

java spring

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

SynchronousQueue与TransferQueue之间的区别

这些实现之间有什么区别,哪些情况应该使用一个或另一个队列?

java queue concurrency producer-consumer

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

使用自定义值验证地图

我有以下地图:

Map<String, MyCustomObject>
Run Code Online (Sandbox Code Playgroud)

我的目标是使用hamcrest匹配器验证此映射的容量.我尝试过以下方法:

assertThat(map, hasEntry("key", (MyCustomObject)hasItem(hasProperty("propertyName", equalTo("value")))));
Run Code Online (Sandbox Code Playgroud)

但看起来该hasItem方法仅适用于集合.

有没有其他方法可以验证自定义对象?

new MyCustomObject()在我的情况下不起作用,因为测试因hashcode相等而失败.而另一件事是我无法修改MyCustomObject class.

java junit hamcrest

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

@ReplaceWithMock和@Qualifier

我正在springockito-annotations 1.0.9用于集成测试.

我有以下控制器:

@Autowired
    public Controller(
            @Qualifier("passwordService ") PasswordService passwordService ,
            @Qualifier("validator") Validator validator,
            @Qualifier("reportService") ReportService reportService,
            DateCalculator dateCalculator,
            Accessor accessor){
        this.passwordService = passwordService;
        this.validator = validator;
        this.reportService = reportService;
        this.dateCalculator = dateCalculator;
        this.accessor = accessor;
    }
Run Code Online (Sandbox Code Playgroud)

在测试中,我将使用@ReplaceWithMock注释从上下文中替换bean .

但不幸的是,它仅适用于没有@Qualifier注释的依赖项.

也就是说,我的测试看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class, classes = {TestContext.class})
public class ControllerTest {

    @Autowired
    @ReplaceWithMock
    private PasswordService passwordService ;
    @Autowired
    @ReplaceWithMock
    private Validator validator;
    @Autowired
    @ReplaceWithMock
    private ReportService reportService;
    @Autowired
    @ReplaceWithMock
    private DateCalculator dateCalculator; …
Run Code Online (Sandbox Code Playgroud)

java integration-testing unit-testing spring-mvc springockito

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

OWASP HTML Sanitizer清除评论

我有应用程序,客户可以存储以下html行,以便为实际浏览器加载不同的样式:

<!--[if IE 6]><link rel="stylesheet" type="text/css" media="all" href="default/css/general_ie6.css"><![endif]--> 
<!--[if IE 7]><link rel="stylesheet" type="text/css" media="all" href="default/css/general_ie7.css"><![endif]--> 
<!--[if IE 8]><link rel="stylesheet" type="text/css" media="all" href="default/css/general_ie8.css"><![endif]--> 
Run Code Online (Sandbox Code Playgroud)

此外,我已配置OWASP policy为以下列方式禁止恶意html标记:

new HtmlPolicyBuilder().allowElements("link").allowAttributes("rel", "type", "media", "href").onElements("link").toFactory();
Run Code Online (Sandbox Code Playgroud)

但在卫生设施if browser lines被取消后.

您能否建议如何配置策略以便存储此类内容?

html java xss html-sanitizing owasp

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

GET方法中的CSRF令牌

我将在我的Web应用程序中避免使用CSRF atack.

我在我的apache上设置了csrf配置,如下所示:

<VirtualHost>
...

    CSRF_Enable on
    CSRF_Action deny
    CSRF_EnableReferer off


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

另外,我安装了以下apache模块:

mod_csrf-0.3
mod_parp-0.12
mod_setenvifplus-0.23
Run Code Online (Sandbox Code Playgroud)

在某些情况下有可能忽略CRSF.

所有东西都运行正常,即csrfpid添加到所有POST方法,不添加到GET.

但是发现了一个问题.当我尝试使用参数发送GET方法时: www.example.com/test.jsp?csffpid = some_csrf_id&some_attribute = 0, csrfpid标记已附加到链接.

我试过玩:

SetEnvIfPlus Request_Method "GET" CSRF_IGNORE=yes.
Run Code Online (Sandbox Code Playgroud)

但是,它在我的情况下不起作用.

另外,我发现,问题是通过mod_csrf.c文件引起的.

获得关于所描述的案例的一些想法或有用的链接将是很好的.

java apache csrf csrf-protection

6
推荐指数
0
解决办法
1457
查看次数

Web应用程序中的CSRF保护

我的应用程序具有apache模块提供的CSRF保护.我的应用程序包含几个页面,允许上传一些文件,如下所示:

<form:form method="post" action="my.controller" enctype="multipart/form-data" id="form">
Run Code Online (Sandbox Code Playgroud)

所有的东西通过我们从更新了Apache的版本时工作得很好 httpd-2.2.3httpd-2.2.15.

我已经google了一段时间,发现问题可能与我的表单中的multipart/form-data参数有关.在这种情况下,表单发送为不安全.另外我发现spring可以通过MultipartFilterspring doc http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html#来处理上面的内容.CSRF,multipartfilter

我是CSRF新手.很高兴知道可以使用带有apache配置的spring CSRF保护来处理这种情况.

此外,我找到了解决方法,我可以为所需的URL禁用CSRF,例如

RewriteRule /url/mycontroller.controller - [E = CSRF_IGNORE:yes]

但我不确定哪一个是正确的.

java apache spring csrf

6
推荐指数
0
解决办法
1130
查看次数

带有null返回值的Spring Ajax @ResponseBody

我有大约50个使用@ResponseBody注释的控制器.

像这样:

@RequestMapping(value = "/someUrl.controller", method = RequestMethod.GET)
public @ResponseBody Object getObject(@RequestParam("id") Long id) {
    Object object = provider.getObject(id);
    return object;
}
Run Code Online (Sandbox Code Playgroud)

有时候getObject方法返回null.问题是在客户端我得到空响应而不是null.

在初始实现中,我们有自定义JsonView对象,它作为包装器而没有@ResponseBody注释.

像这样:

@RequestMapping(value = "/someUrl.controller", method = RequestMethod.GET)
public JsonView<Object> getObject(@RequestParam("id") Long id) {
    Object object = provider.getObject(id);
    return new JsonView(object);
}
Run Code Online (Sandbox Code Playgroud)

所以它工作正常.

我找到了一些解决方案如何覆盖Jackson 2.0中的null序列化器?但不幸的是,它仅适用于POJO中的字段.

您有什么想法可以处理吗?

提前致谢!

java ajax spring jackson

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

ActiveDirectoryLdapAuthenticationProvider和final修饰符

我已经开始在我的项目中使用spring ActiveDirectoryLdapAuthenticationProvider和另一个用于DB验证用户身份的项目.

我关注的主要问题涉及可能在具有相同凭据的活动目录服务器和数据库端创建的相同用户.之后,这些用户将有可能使用他们的电子邮件登录项目.在此步骤中,我堆叠的情况不一致,因为拥有DBAD凭据的用户对项目页面具有不同的访问权限.

为了解决这个问题,我们决定删除可能登录AD用户的电子邮件,因为对于数据库提供商,我们无法修改现有功能,用户应该以之前的方式登录.

我已经调查了Spring的ActiveDirectoryLdapAuthenticationProvider方面,然后发现该类是,final并且不幸的是我没有可能覆盖我的方法所需createBindPrincipal.

我们决定要做的下一步是将现有类复制粘贴到我们的项目中,然后删除final修饰符,然后我们执行与此帖子中类似的操作如何通过LDAP over TLS对Active Directory进行身份验证?.

总的来说,我不想让它保持原样,因为将来我们决定转移到最高版本的春天时将是困难的支持.除此之外,我们应该复制过去ActiveDirectoryLdapAuthenticationProviderTest以保持适当形式的覆盖范围.

有人可以解释一下这门课的主要原因是什么final

java spring spring-ldap

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

对遗留数据应用XSS策略

我们的遗留应用程序最初设计为允许为可自定义的页面存储任何html标记.这些页面的想法是存储客户需要的任何HTML,然后在某些时候有可能呈现这个HTML数据.

这种方法允许用户存储任何XSS.我们当前的目标是定义和实施不允许存储任何XSS的策略.

基于一些预定义的规则,我们已经研究了几种能够清理html的方法:

但这两种方法都是基于卫生而非验证.所以基本情况可能如下所示:

  1. 用户输入一些要输入的数据
  2. 用户输入被清理并检查与原始(初始 - 步骤1)用户输入的相等性.
  3. 如果有任何差异,则认为验证失败.

这种方法适用于新数据.对于遗留数据,我们会遇到几个问题:

  1. 如果用户遗留数据包含禁用元素,则用户将无法保存稍微修改过的html内容版本.
  2. 以下流程会让用户感到困惑:
    1. 用户编辑包含有关新定义的策略的禁止标记/内容的旧数据.
    2. 用户替换所有内容并保存.
    3. 用户出于某种原因决定恢复旧版本
    4. 用户不允许保存以前的版本,因为它包含禁止的标签/内容.

所以出现以下问题:

  1. 验证恶意html元素和XSS向量的用户输入的最佳方法是什么?
  2. 哪种方法可用于修复遗留数据中提到的问题?

java xss legacy-database

6
推荐指数
0
解决办法
74
查看次数