我正在从Spring Boot 1.4.9迁移到Spring Boot 2.0以及Spring Security 5,我正在尝试通过OAuth 2进行身份验证.但是我收到此错误:
java.lang.IllegalArgumentException:没有为id"null"映射PasswordEncoder
从Spring Security 5的文档中,我了解到密码的存储格式已更改.
在我当前的代码中,我创建了我的密码编码器bean:
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
Run Code Online (Sandbox Code Playgroud)
但它给了我以下错误:
编码密码看起来不像BCrypt
所以我按照Spring Security 5文档更新编码器:
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
Run Code Online (Sandbox Code Playgroud)
现在如果我可以在数据库中看到密码,那么它就是存储的
{bcrypt}$2a$10$LoV/3z36G86x6Gn101aekuz3q9d7yfBp3jFn7dzNN/AL5630FyUQ
Run Code Online (Sandbox Code Playgroud)
随着第一个错误消失,现在当我尝试进行身份验证时,我收到以下错误:
java.lang.IllegalArgumentException:没有为id"null"映射PasswordEncoder
为了解决这个问题,我尝试了Stackoverflow的以下所有问题:
这是一个类似于我的问题,但没有回答:
注意:我已将加密密码存储在数据库中,因此无需再次编码UserDetailsService.
在Spring security 5文档中,他们建议您可以使用以下方法处理此异常:
DelegatingPasswordEncoder.setDefaultPasswordEncoderForMatches(的PasswordEncoder)
如果这是修复,那么我应该把它放在哪里?我试过把它放在PasswordEncoder像下面这样的bean中,但它没有用:
DelegatingPasswordEncoder def = new DelegatingPasswordEncoder(idForEncode, encoders);
def.setDefaultPasswordEncoderForMatches(passwordEncoder);
Run Code Online (Sandbox Code Playgroud)
MyWebSecurity类
@Configuration
@EnableWebSecurity
public class SecurityConfiguration …Run Code Online (Sandbox Code Playgroud) java spring spring-security spring-boot spring-security-oauth2
我是Elastic search的新手,我正在尝试使用whitespace Analyzer创建一个Completion建议器的演示.
根据Whitespace Analyzer的文档,它会在遇到空白字符时将文本分解为术语.所以我的问题是它是否也适用于完成建议者?
所以对于我的完成建议器前缀:"ela", 我期待输出为"Hello elastic search".
我知道一个简单的解决方案是添加多字段输入:
"suggest": {
"input": ["Hello","elastic","search"]
}
Run Code Online (Sandbox Code Playgroud)
但是,如果这是解决方案那么使用分析仪的意义是什么?分析仪在完成建议中是否有意义?
我的映射:
{
"settings": {
"analysis": {
"analyzer": {
"completion_analyzer": {
"type": "custom",
"filter": [
"lowercase"
],
"tokenizer": "whitespace"
}
}
}
},
"mappings": {
"my-type": {
"properties": {
"mytext": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"suggest": {
"type": "completion",
"analyzer": "completion_analyzer",
"search_analyzer": "completion_analyzer",
"max_input_length": 50
}
}
}
}
} …Run Code Online (Sandbox Code Playgroud) autocomplete autosuggest elasticsearch elasticsearch-analyzers elasticsearch-6
我是apache kafka的初学者,并试图学习融合 - kafka - rest - utils,但是我很困惑,我怎么能用它.
在搜索过程中,我发现了这个文档https://spring.io/blog/2015/04/15/using-apache-kafka-for-integration-and-data-processing-pipelines-with-spring
这是非常好的文档,但它并没有帮助我学习rest-utils.
融合kafka rest utils的git代码是
https://github.com/confluentinc/kafka-rest演示了如何使用rest kafka.但我想知道确切的程序,以便更加了解它.用一些简单的解释.任何人都可以建议我与我如何使用休息客户端的一些链接.请指导我这个.
这可能是一个愚蠢的问题,但我没有其他选择可以学习.
提前致谢.
实际的情况就像我试图一起测试我的角度js控制器和服务,其中首先我调用get ajax请求,并且在成功时我调用一个也包含post ajax请求的用户服务.当我运行测试时,我收到以下错误.
错误:意外请求:POST http:// localhost:8080/services/access /home/test/WebstormProjects/test2/bower_components/angular-mocks/angular-mocks.js中不再需要更多请求
我在堆栈溢出中发现了一些类似的问题,但它不适合我的场景.以下是我发现的问题.
意外请求:GET $ httpBackend不再需要更多请求
这是我的代码,我做了并尝试.
test.js
describe('Login controller',function(){
beforeEach(module('app'));
var httpBackend,ctrl, scope,userService;
beforeEach(inject(function($controller, $rootScope,$httpBackend,$injector,_userService_) {
scope = $rootScope.$new();
httpBackend = $injector.get('$httpBackend');
userService = _userService_;
ctrl = $controller('LoginController', {
$scope: scope
});
}));
it('should set authentication true', function() {
scope.authenticateUser();
var username = 'test';
var password = '123456';
var requestToken = "";
httpBackend.whenGET('http://localhost:8080/services/request').respond(200,{
status : 0
});
httpBackend.expect('POST', 'http://localhost:8080/services/access').respond(200, {
status:"success"
});
var …Run Code Online (Sandbox Code Playgroud) 我是 Java 自定义注释新手
我正在开发一个自定义注释,它使用 spring 和 mongodb 加密和解密字符串并将其存储在数据库中,并且为了加密,我使用 jasypt。
我没有得到这样做的确切程序。
我的代码。
实体
public class Demo {
@Id
private Long id;
private String somethingPublic;
@EncryptDemo()
private String somethingPrivate;
//getter setter
}
Run Code Online (Sandbox Code Playgroud)
自定义注释
@Target({ ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface EncryptDemo {
}
Run Code Online (Sandbox Code Playgroud)
在存储实体之前,如何将加密行为添加到自定义注释中。
我应该在哪里添加加密代码,以在调用时反映到我的注释中。
我想开发一个像hibernate一样的注释。
任何帮助将不胜感激。提前致谢。
java ×2
spring ×2
angularjs ×1
annotations ×1
apache-kafka ×1
autocomplete ×1
autosuggest ×1
hibernate ×1
jasmine ×1
mongodb ×1
spring-boot ×1
unit-testing ×1
webstorm ×1