8

我有一个 LoginView,我基本上是从 bakery starter 项目中复制的。

当我运行面包店应用程序并尝试使用错误的凭据登录时,会出现一个带有错误消息的附加 div。

但是,此错误消息 div 不会出现在我的视图中。从那以后,我已将模板改编为我们的企业设计,但我记得当这两个文件仍然是面包店应用程序的精确副本时LoginView.java,这个问题已经存在。login-view.html我仔细检查了 .error 不只是被我自己的 css 隐藏了 - DOM 中不存在 div.error 。

访问时调试LoginView /login?error(访问login?error=true也是一样)显示不识别任何queryParameters!--> 为什么?


我的应用程序调试: 调试截图


烘焙应用程序调试: 调试截图2


我的(Spring)安全配置在登录方面也是相同的:

.and()
.formLogin()
.loginPage(("/login")).permitAll()
.loginProcessingUrl("/login")
.failureUrl("/login?error")

编辑:根据评论中的要求,我将添加模板的相关部分。但是,错误 100% 不在模板中 - 正如我在调试中看到的那样,错误已经发生LoginView.java在 afterNavigation 方法中。

<dom-module id="login-view">
  <template>
    <style include="shared-styles">
        .....
    </style>
        .....
            <template is="dom-if" if="[[error]]">
              <div class="error">
                <iron-icon icon="vaadin:exclamation-circle-o" class="error__icon"></iron-icon>
                <p class="error__text">
                  Der Benutzername und/oder das Passwort stimmt nicht. Bitte überprüfe deine Angaben und versuche es erneut.
                </p>
              </div>
            </template>
      ....
  </template>

  <script>
    class LoginView extends Polymer.GestureEventListeners(Polymer.Element) {
        static get is() {
            return 'login-view';
        }

        static get properties() {
            return {
                error: {
                    type: Boolean,
                    value: false
                }
            };
        }
        ......
    }
    window.customElements.define(LoginView.is, LoginView);
  </script>
</dom-module>
4

1 回答 1

1

虽然这个问题已经很老了,但似乎这个问题与自由服务器有关。在这种情况下,可能有一些东西阻止了(?)?error查询参数的使用,因为相同的代码可以在其他服务器上运行。

如果问题仍然存在并且可以在可以共享的项目中重现,您应该向vaadin/spring存储库创建一个问题。LoginView实现不应再基于 a ,PolymerTemplate因为可以使用服务器端 Java 集成,例如LoginOverlay组件。同样从 Vaadin 20 开始,有一个 Spring 安全配置类VaadinWebSecurityConfigurerAdapter,它为使用 Vaadin 应用程序设置 Spring 安全性提供帮助。有关文档的更多详细信息。

于 2021-06-09T19:29:47.913 回答