代码之家  ›  专栏  ›  技术社区  ›  Factor Three

Micronout会话登录代码在启动时失败

  •  0
  • Factor Three  · 技术社区  · 7 年前

    我正在尝试运行一个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文件,当我运行MixOnter时,现在会产生以下错误:

    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提供正确的配置语法,或者提供一些其他正确的配置行,这些配置行将告诉微服务在登录失败后的成功位置?或者(最好)有人能提供一个基于micronaut会话的登录服务的实例,它实际上是有效的吗???

    0 回复  |  直到 7 年前
        1
  •  1
  •   James Kleeh    7 年前

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