我正在尝试运行应该运行基于会话的身份验证的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)
这显示以下内容:
指南中提供了至少一个错误,该错误为Micronaut微服务设置基于会话的登录,因为整个YAML文件与指南中所述的行是相同的!由于YAML文件中的这些解析失败,因此指南中描述的代码根本无法工作!
不能准确地依靠本指南中的信息,因此需要对其进行更正以使其代码正常工作。
通常,即使忽略quide提供有关登录URL配置的错误信息的事实,使用YAML来配置微服务也极容易出错(由于容易发生格式错误),可能不是配置微服务(或其他任何方式)的最实用格式。
有人可以为那些成功登录和失败登录的URL提供适当的配置语法,还是其他一些可以告诉微服务登录失败成功的正确配置行?或者(最好)有人可以提供一个实际有效的基于微会话会话的登录服务的示例?
答案 0 :(得分:1)
您的Yaml文件格式不正确。您可以使用在线验证器来获取有关任何错误的即时反馈。例如https://codebeautify.org/yaml-validator