是否可以将JSON Web加密(JWE)与Spring Security OAuth2 JWT一起使用?
现在我有以下内容JwtAccessTokenConverter
:
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter() {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
DBUserDetails user = (DBUserDetails) authentication.getUserAuthentication().getPrincipal();
final Map<String, Object> additionalInfo = new HashMap<>();
additionalInfo.put("user_id", user.getUser().getId());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
OAuth2AccessToken enhancedToken = super.enhance(accessToken, authentication);
return enhancedToken;
}
};
converter.setSigningKey(jwtAccessTokenConverterSigningKey);
DefaultAccessTokenConverter accessTokenConverter = new DefaultAccessTokenConverter();
DefaultUserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter();
userTokenConverter.setUserDetailsService(userDetailsService);
accessTokenConverter.setUserTokenConverter(userTokenConverter);
converter.setAccessTokenConverter(accessTokenConverter);
return converter;
}
Run Code Online (Sandbox Code Playgroud)
如何在这里添加JWE支持?
spring-security jwt spring-security-oauth2 jwe spring-oauth2
在我的Spring Boot项目中,我定义了以下RestController方法:
@PreAuthorize("hasAuthority('" + Permission.APPEND_DECISION + "')")
@RequestMapping(value = "/{decisionId}/decisions", method = RequestMethod.PUT)
public DecisionResponse appendDecisionToParent(@PathVariable @NotNull @DecimalMin("0") Long decisionId, @Valid @RequestBody AppendDecisionRequest decisionRequest) {
....
return new DecisionResponse(decision);
}
Run Code Online (Sandbox Code Playgroud)
现在,为了提供允许的授权机构名称,我使用以下代码构造:
@PreAuthorize("hasAuthority('" + Permission.APPEND_DECISION + "')")
Run Code Online (Sandbox Code Playgroud)
Permission.APPEND_DECISION
常数在哪里:
public static final String APPEND_DECISION = "APPEND_DECISION";
Run Code Online (Sandbox Code Playgroud)
Java / Spring中是否还有任何更优雅的方式来定义这种代码?
在我的 Spring Boot 应用程序中,我有以下方法:
Decision create(@NotBlank String name, String url, @NotNull User author);
Run Code Online (Sandbox Code Playgroud)
现在,我直接在代码中检查以下条件:
if (!org.apache.commons.lang3.StringUtils.isEmpty(url) && !urlValidator.isValid(url)) {
throw new IllegalArgumentException("Decision url is not valid");
}
Run Code Online (Sandbox Code Playgroud)
换句话说 -url
参数可以是null
有效的 url。
是否可以用现有的验证注释(例如 JSR-303)替换此代码?
有时我必须通过RegExp忽略大小写查询搜索节点,它不适用于非拉丁字符.
比如我有一个 node.name property = ?? ?????????? ??????
如果我搜索
name =~ (?i).*?? ?????????? ??????.*
Run Code Online (Sandbox Code Playgroud)
一切都很好
但是如果是的话
name =~ (?i).*?? ?????????? ??????.*
Run Code Online (Sandbox Code Playgroud)
它不搜索节点.
顺便说一句 - 在拉丁字符上一切正常.
我做错了什么以及如何解决?
到我的Spring Boot 2.0.0.M6 application.properties
我添加了以下几行:
spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
Run Code Online (Sandbox Code Playgroud)
但是当我尝试上传到我的RestController 21MB文件时,它失败并出现以下异常:
Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (21112803) exceeds the configured maximum (10485760)
Run Code Online (Sandbox Code Playgroud)
我在使用Spring Boot打包的Embedded Tomcat上运行我的应用程序.
如何正确配置我的应用程序,以允许文件上传高达100MB?
为了提高 OCR 质量,我需要对扫描的图像进行预处理。有时我需要用几张图片(页面上的组件并且它们处于不同的角度 - 例如,一次扫描一些纸质文档)对图像进行 OCR,例如:
是否可以自动以编程方式将此类图像划分为包含每个逻辑文档的单独图像?例如使用 ImageMagick 之类的工具或其他工具?是否有针对此类问题的解决方案/技术?
在我的 Neo4j 3.3.3 社区版上,我使用apoc-3.3.0.2-all.jar
APOC 插件,并且安装了以下 APOC 触发器:
CALL apoc.trigger.add('HAS_VALUE_ON_INDEX', 'UNWIND {createdRelationships} AS r MATCH (d:Decision)-[r:HAS_VALUE_ON]->(ch:Characteristic)
CALL apoc.index.addRelationship(r, keys(r)) RETURN count(*)', {phase:'after'})
Run Code Online (Sandbox Code Playgroud)
触发器安装成功,我用CALL apoc.trigger.list()
命令验证了它。
现在,当我尝试通过以下查询对关系属性使用手动索引时:
CALL apoc.index.relationships('HAS_VALUE_ON','value:10000.32') YIELD rel, start AS d, end AS ch RETURN rel;
Run Code Online (Sandbox Code Playgroud)
Neo4j 返回以下错误:
Write operations are not allowed for user 'neo4j' with FULL restricted to READ.
Run Code Online (Sandbox Code Playgroud)
如何解除这个限制呢?
更新
我注意到第一次测试运行后 - 一切正常。使用以下查询进行第二次后续测试运行时,逻辑失败:
CALL apoc.index.relationships('HAS_VALUE_ON','value:10000.32') YIELD rel, start AS d, end AS ch RETURN d;
Run Code Online (Sandbox Code Playgroud)
但以下情况除外:
org.springframework.dao.PermissionDeniedDataAccessException: Error executing Cypher; Code: Neo.ClientError.Security.Forbidden; Description: …
Run Code Online (Sandbox Code Playgroud) 我需要用Lucene查询语言实现以下谓词:
{param} IN optionIds
Run Code Online (Sandbox Code Playgroud)
{param}
我的外部参数在哪里,optionIds
是一个数组(或集合).
例如,我有以下文件optionIds
:
"optionIds": [
72,
44,
11,
9,
10
]
Run Code Online (Sandbox Code Playgroud)
以下Lucene谓词optionIds:72
正确返回此文档.
但是如何根据以下值返回此文档:72,11,9
以下谓词optionIds:72, 11, 9
不起作用,Lucene查询返回空结果.
请说明如何使用IN
数组(集合)在Lucene查询语言中正确使用(模拟)操作.另外,请说明如何使用ALL IN/ANY IN
.
我使用以下逻辑在单节点 Spring Batch 应用程序上重新启动未完成的作业:
public void restartUncompletedJobs() {
try {
jobRegistry.register(new ReferenceJobFactory(documetPipelineJob));
List<String> jobs = jobExplorer.getJobNames();
for (String job : jobs) {
Set<JobExecution> runningJobs = jobExplorer.findRunningJobExecutions(job);
for (JobExecution runningJob : runningJobs) {
runningJob.setStatus(BatchStatus.FAILED);
runningJob.setEndTime(new Date());
jobRepository.update(runningJob);
jobOperator.restart(runningJob.getId());
}
}
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正试图让它在双节点集群上工作。每个节点上的两个应用程序都将指向共享的 PostgreSQL 数据库。
让我们考虑以下示例:我有 2 个作业实例 -jobInstance1
正在运行node1
,jobInstance2
正在运行node2
。Node1
在jobInstance1
执行过程中由于某种原因重新启动。后node1
重新启动春季批处理应用程序尝试重新启动与上面给出逻辑未完成任务-它看到有2个未完成的作业实例-jobInstance1
和jobInstance2
(这是正常运行的node2
),并尝试重新启动它们。这种方式改为重新启动 only jobInstance1
- 它将重新启动jobInstance1 …
是否有可能在Spring Kafka中为特定主题配置分区数量,以便能够有效地使用org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory.setConcurrency(Integer)
方法来并行消费者关于此主题以加快消息消耗和处理?如果是这样,你能否展示一下如何做到这一点的例子.
spring-boot ×4
spring ×3
cypher ×2
java ×2
neo4j ×2
apache-kafka ×1
imagemagick ×1
jsr ×1
jwe ×1
jwt ×1
lucene ×1
neo4j-apoc ×1
ocr ×1
spring-batch ×1
spring-kafka ×1
spring-rest ×1
tomcat ×1
validation ×1