Micronaut会话登录代码在启动后失败

时间:2019-02-26 03:20:14

标签: security session micronaut

我正在尝试运行应该运行基于会话的身份验证的Micronaut服务器。我正在使用

中提供的说明

https://guides.micronaut.io/micronaut-security-session/guide/index.html

根据这些说明,我正在application.yaml文件中使用以下信息:

micronaut:
   security:
     enabled: true 
     endpoints:
        login:
        enabled: true 
      logout:
        enabled: true 
    session:
      enabled: true 
      login-success-target-url: / 
      login-failure-target-url: /login/authFailed       

我还使用了说明中指定的正确版本的Micronaut(v1.1.0.M1)。

我运行Micronaut服务器,并遇到以下故障:

22:07:58.212 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: while parsing a block mapping
 in 'reader', line 3, column 6:
         enabled: true 
     ^
expected <block end>, but found '<block mapping start>'
 in 'reader', line 7, column 7:
          logout:
      ^

org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
 in 'reader', line 3, column 6:
         enabled: true 
     ^
expected <block end>, but found '<block mapping start>'
 in 'reader', line 7, column 7:
          logout:
      ^

    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:572)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:214)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144)
    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236)
    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215)
          ...

        (Lines omitted for brevity)

这里缺少什么吗?这些是说明中提供的确切行!我正在使用指南中介绍的会话登录示例代码!

更新:

我使用了James建议的验证应用程序:

https://codebeautify.org/yaml-validator

修复他在application.yaml中提到的格式问题。显然,YAML解析器对YAML声明中的制表符和空格有些敏感。重新输入部分YAML文件已产生以下文件:

micronaut:
   security:
     enabled: true 
     endpoints:
        login:
           enabled: true 
        logout:
           enabled: true 
        session:
            enabled: true 
            login-success-target-url: / 
            login-failure-target-url: /login/authFailed

请注意使内容有效所需的间距更改。

解决格式问题后,我现在有了一个“有效的” YAML文件,当我运行Micronaut时,它会产生以下错误:

10:06:56.253 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: mapping values are not allowed here
 in 'reader', line 11, column 37:
                login-success-target-url: / 
                                    ^

org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here
 in 'reader', line 11, column 37:
                login-success-target-url: / 
                                    ^

at  org.yaml.snakeyaml.scanner.ScannerImpl.fetchValue(ScannerImpl.java:870)
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:358)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:558)
              ...
           (Lines omitted for brevity)

这显示以下内容:

  1. 指南中提供了至少一个错误,该错误为Micronaut微服务设置基于会话的登录,因为整个YAML文件与指南中所述的行是相同的!由于YAML文件中的这些解析失败,因此指南中描述的代码根本无法工作!

  2. 不能准确地依靠本指南中的信息,因此需要对其进行更正以使其代码正常工作。

  3. 通常,即使忽略quide提供有关登录URL配置的错误信息的事实,使用YAML来配置微服务也极容易出错(由于容易发生格式错误),可能不是配置微服务(或其他任何方式)的最实用格式。

有人可以为那些成功登录和失败登录的URL提供适当的配置语法,还是其他一些可以告诉微服务登录失败成功的正确配置行?或者(最好)有人可以提供一个实际有效的基于微会话会话的登录服务的示例?

1 个答案:

答案 0 :(得分:1)

您的Yaml文件格式不正确。您可以使用在线验证器来获取有关任何错误的即时反馈。例如https://codebeautify.org/yaml-validator