小编Jim*_*mmy的帖子

Spring Security 5:没有为id"null"映射PasswordEncoder

我正在从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

37
推荐指数
6
解决办法
4万
查看次数

Elasticsearch:完成建议不使用空白分析器

我是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

8
推荐指数
1
解决办法
2034
查看次数

如何在Spring mvc中使用Apache kafka?可能吗?

我是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.但我想知道确切的程序,以便更加了解它.用一些简单的解释.任何人都可以建议我与我如何使用休息客户端的一些链接.请指导我这个.

这可能是一个愚蠢的问题,但我没有其他选择可以学习.

提前致谢.

spring-integration apache-kafka confluence-rest-api

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

错误:意外请求:POST Karma-jasmine-angular

实际的情况就像我试图一起测试我的角度js控制器和服务,其中首先我调用get ajax请求,并且在成功时我调用一个也包含post ajax请求的用户服务.当我运行测试时,我收到以下错误.

错误:意外请求:POST http:// localhost:8080/services/access /home/test/WebstormProjects/test2/bower_components/angular-mocks/angular-mocks.js中不再需要更多请求

我在堆栈溢出中发现了一些类似的问题,但它不适合我的场景.以下是我发现的问题.

意外请求:GET $ httpBackend不再需要更多请求

模拟$ httpBackend - 如何处理"意外请求,不再需要请求"?

AngularJS $ 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)

unit-testing jasmine webstorm angularjs karma-jasmine

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

如何使用自定义注释存储和加载加密值

我是 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 spring annotations hibernate mongodb

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