小编dur*_*dur的帖子

Spring Security不能与"hasRole('ROLE_ADMIN')"或ROLE_ADMIN一起使用

我使用的是Spring Security 4.1版.如果我指定access="hasRole('ROLE_ADMIN')"access="ROLE_ADMIN"在安全配置中,我可以登录,但我无法访问我的管理页面.

<security:http use-expressions="true">
    <security:intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
    <!-- security:intercept-url pattern="/admin" access="hasRole('ROLE_ADMIN')" / -->
    <security:intercept-url pattern="/createmanufsensors" access="isAuthenticated()" />
</security:http>
<security:global-method-security secured-annotations="enabled"></security:global-method-security>
Run Code Online (Sandbox Code Playgroud)

以下是调试错误:

DEBUG [http-bio-8080-exec-10] [org.springframework.security.web.access.intercept.FilterSecurityInterceptor] Secure object: FilterInvocation: URL: /admin; Attributes: [hasRole('ROLE_ADMIN')]     
2016-06-25 10:07:53,667 [] DEBUG [http-bio-8080-exec-10] [org.springframework.security.web.access.intercept.FilterSecurityInterceptor] Previously Authenticated: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@cc305a73: Principal: org.springframework.security.core.userdetails.User@74b46745: Username: francatore                                                  ; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN                                ; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@166c8: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 7F702A6911A71EA5556C750B6D424FF5; Granted Authorities: ROLE_ADMIN                                   
2016-06-25 10:07:53,667 …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

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

如果缺少PDF的字体,为什么jasper报告不会抛出JRFontNotFoundException?

我读

我希望Jasper Reports会抛出一个JRFontNotFoundException如果机器上没有安装字体的话.

但我的应用程序并没有抛出JRFontNotFoundException,虽然我没有在任何(Jaspersoft Studios,JasperReports,Adobe Acrobat Reader)机器上安装使用过的字体"Helvetica".

JRXML:

<parameter name="timestamp" class="java.util.Date"/>
[...]
<textField>
    <reportElement x="0" y="0" width="50" height="16" uuid="0007846a-26f1-457a-a198-67a2f7c8417c">
        <property name="local_mesure_unitwidth" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.width" value="px"/>
        <property name="local_mesure_unitx" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.x" value="px"/>
        <property name="local_mesure_unity" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.y" value="px"/>
        <property name="local_mesure_unitheight" value="pixel"/>
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
    </reportElement>
    <box padding="2"/>
    <textElement textAlignment="Left" verticalAlignment="Top">
        <font size="8" pdfFontName="Helvetica" pdfEncoding="Cp1250" isPdfEmbedded="true"/>
    </textElement>
    <textFieldExpression><![CDATA[DATEFORMAT($P{timestamp},"dd.MM HH:mm")]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)

Maven依赖:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>5.6.0</version>
</dependency>
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-functions</artifactId>
    <version>5.6.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Java的:

private byte[] …
Run Code Online (Sandbox Code Playgroud)

java fonts pdf-generation jasper-reports export-to-pdf

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

将存储库从Sonatype Nexus 1.9迁移到3.0

我们目前有一个Nexus存储库(版本1.9),用于将我们的Maven工件存储在旧服务器中.在我们的新服务器中,我们安装了最新版本的Nexus存储库(3.0.2).显然,版本1.9根据Maven坐标树(org/apache/commons/...)直接在文件系统中存储Maven工件,但版本3.0.2将工件存储在弹性搜索存储库中,作为blob对象.

所以我的问题是:如何将所有工件从版本1.9轻松迁移到新版本3.0.2?迁移工具应该附带3.1版本,但我担心它只涉及从2.x到3.1的迁移.它是这个进程的一组shell命令吗?

migration repository nexus

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

尝试使用Elasticsearch Transport Client时出错:未加载到类路径的依赖项

我使用以下代码在Elasticsearch上创建客户端:

Settings settings = Settings.builder()
    .put("cluster.name", "myClusterName")
    .build();
TransportClient client = new PreBuiltTransportClient(settings)
    .addTransportAddress(newInetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ActionPlugin
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.elasticsearch.transport.client.PreBuiltTransportClient.<clinit>(PreBuiltTransportClient.java:54)
    at exadatum.com.exadatum.elastic.testSearch.main(testSearch.java:30)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.plugins.ActionPlugin
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 14 more
Run Code Online (Sandbox Code Playgroud)

java elasticsearch

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

基于URL参数的Spring Security REST API角色

我有一个使用Spring Security和OAuth2在Spring Boot中编写的REST API.资源以这种方式保护:

@Override
public void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/api/v1/security/**").hasRole("ADMIN");
}
Run Code Online (Sandbox Code Playgroud)

我想基于项目介绍API的新部分,其中权限是细粒度的.让我们考虑一个打印项目配置的简单端点.

GET /api/v1/project/{projectId}/config
Run Code Online (Sandbox Code Playgroud)

如何将资源服务器配置为仅允许具有该角色的用户访问ROLE_PROJECT_{projectId}_ADMIN而无需手动指定所有项目?

此外,如果此机制具有特定名称,请在评论中告诉我,我可以更改问题标题.

java rest spring spring-security

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

在嵌入式Jetty上启用TLS-1.2

目前我正在使用此代码启用TLS 1.2:

ServerConnector httpsConnector = new ServerConnector(server, 
       new SslConnectionFactory(sslContextFactory, "http/1.1"),
       new HttpConnectionFactory(https_config));
httpsConnector.setPort(8443);
httpsConnector.setIdleTimeout(50000)
Run Code Online (Sandbox Code Playgroud)

现在我正在使用TLS 1.1并希望将其更改为TLS 1.2.

embedded-jetty tls1.2

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

带有 JAX-RS 2 和 Tomcat 9 的 RESTful Java

我正在使用 JAX-RS 2 测试 RESTful 服务。下面是我的项目和我的类。

在此处输入图片说明

@ApplicationPath("/test/*")
public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> clazz = new HashSet<>();
        clazz.add(UserResource.class);
        System.out.println("getClass");
        return clazz;
    }
Run Code Online (Sandbox Code Playgroud)

资源类如:

@ApplicationPath("/test/*")
public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> clazz = new HashSet<>();
        clazz.add(UserResource.class);
        System.out.println("getClass");
        return clazz;
    }
Run Code Online (Sandbox Code Playgroud)

当我使用 测试服务时http://localhost:8082/dt/test/user,出现 404 错误。

java rest jax-rs http-status-code-404

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

antMatchers与路径的任何开头匹配

我有用于身份验证的REST服务。身份验证端点将看起来像/api/v.1/authentication。API版本是可以更改以反映更新版本的变量。一个例子是/api/v.2/authentication。我喜欢有一个antMatcher可以处理这两种情况的应用程序,因此我尝试.antMatchers(HttpMethod.POST,"**/authenticate").permitAll()使用**来匹配端点的任何开头,但这是行不通的。下面的完整设置。

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
        .csrf().disable()
        .authorizeRequests()
             .antMatchers(HttpMethod.POST, "**/authenticate").permitAll()
             .antMatchers(HttpMethod.GET, "**/get-public-key").permitAll()
             .and()
        .authorizeRequests()
             .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
             .anyRequest().authenticated();
}
Run Code Online (Sandbox Code Playgroud)

有什么建议可以解决这个问题吗?

spring spring-security spring-boot

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

Spring - 在 RabbitMQ 侦听器中验证传入消息

我正在使用 Spring Boot 框架。我想通过 RabbitMQ 将一个对象从一个服务发送到另一个服务,如下所示:

服务一:

rabbitTemplate.convertAndSend("queue", createAccountRequestMessage);
Run Code Online (Sandbox Code Playgroud)

服务乙:

@RabbitListener(queues = "queue")
public void onAccountRequested(@Valid CreateAccountRequestMessage createAccountRequestMessage, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG, long tag) throws IOException
{
    
}
Run Code Online (Sandbox Code Playgroud)

CreateAccountRequestMessage课堂上,我定义了一些验证注释,例如@NotEmpty@NotNull等,但是当我从服务 A 向服务 B 发送错误消息时,@Valid注释不起作用并且CreateAccountRequestMessage在调用onAccountRequested方法之前未验证对象。

java validation spring spring-mvc rabbitmq

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

如何在 Camunda Spring Boot 应用程序的 Junit 测试中使用 ProcessEngineRule?

我尝试为 Camunda Spring Boot 应用程序运行 JUnit 测试。我跟着测试

JUnit 4

使用 JUnit 4 编写单元测试的风格,必须使用 ProcessEngineRule。通过此规则,流程引擎和服务可通过 getter 获得。与 ProcessEngineTestCase(见上文)一样,包含此规则将在类路径上查找默认配置文件。当使用相同的配置资源时,流程引擎静态缓存在多个单元测试上。

以下代码片段显示了使用 JUnit 4 测试风格和 ProcessEngineRule 用法的示例。

public class MyBusinessProcessTest {

  @Rule
  public ProcessEngineRule processEngineRule = new ProcessEngineRule();

  @Test
  @Deployment
  public void ruleUsageExample() {
    RuntimeService runtimeService = processEngineRule.getRuntimeService();
    runtimeService.startProcessInstanceByKey("ruleUsage");

    TaskService taskService = processEngineRule.getTaskService();
    Task task = taskService.createTaskQuery().singleResult();
    assertEquals("My Task", task.getName());

    taskService.complete(task.getId());
    assertEquals(0, runtimeService.createProcessInstanceQuery().count());
  }
}
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [activiti.cfg.xml]; nested exception is java.io.FileNotFoundException: class path …
Run Code Online (Sandbox Code Playgroud)

junit4 camunda spring-boot

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