我使用的是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) 我读
我希望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) 我们目前有一个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命令吗?
我使用以下代码在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) 我有一个使用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而无需手动指定所有项目?
此外,如果此机制具有特定名称,请在评论中告诉我,我可以更改问题标题.
目前我正在使用此代码启用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.
我正在使用 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 错误。
我有用于身份验证的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 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方法之前未验证对象。
我尝试为 Camunda Spring Boot 应用程序运行 JUnit 测试。我跟着测试:
JUnit 4
使用 JUnit 4 编写单元测试的风格,必须使用 ProcessEngineRule。通过此规则,流程引擎和服务可通过 getter 获得。与 ProcessEngineTestCase(见上文)一样,包含此规则将在类路径上查找默认配置文件。当使用相同的配置资源时,流程引擎静态缓存在多个单元测试上。
以下代码片段显示了使用 JUnit 4 测试风格和 ProcessEngineRule 用法的示例。
Run Code Online (Sandbox Code Playgroud)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()); } }
但我收到一个错误:
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) java ×6
spring ×4
rest ×2
spring-boot ×2
camunda ×1
fonts ×1
jax-rs ×1
junit4 ×1
migration ×1
nexus ×1
rabbitmq ×1
repository ×1
spring-mvc ×1
tls1.2 ×1
validation ×1