我正在尝试运行一个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)
这显示了以下内容:
-
在为Micronaut微服务设置基于会话的登录所提供的指南中至少有一个错误,因为整个YAML文件与指南中描述的相同!由于YAML文件中的这些解析失败,指南中描述的代码根本无法工作!
-
不能依赖本指南中当前的信息来保证准确性,需要对其进行更正,以使其代码正常工作。
-
一般来说,即使忽略quide提供了关于登录URL配置的错误信息这一事实,使用YAML来配置微服务也是非常容易出错的(因为格式化错误很容易发生),而且可能不是配置微服务(或其他任何东西,这方面的)最实际的格式。
是否有人可以为登录成功和登录失败URL提供正确的配置语法,或者提供一些其他正确的配置行,这些配置行将告诉微服务在登录失败后的成功位置?或者(最好)有人能提供一个基于micronaut会话的登录服务的实例,它实际上是有效的吗???