Параметры угловой страницы добавляются к URL-адресу в сафари

У меня есть материальное угловое приложение. Первая страница - это страница входа, которая при успешном входе заменяется домашней страницей. В случае сафари я вижу, что пароль для имени пользователя добавляется к URL-адресу после входа в систему. Я не жду этого и в хроме этого не происходит.

Страница входа выглядит так:

  <form (ngSubmit) = "doLogin()">
              <div><input matInput placeholder = " User ID" name = "userId" [(ngModel)] = "userId" ></div>
              <div><input matInput type = "password" name = "password" placeholder = " Password" [(ngModel)] = "password"></div>

              <div><button mat-raised-button  (click) = "doLogin()">Sign In</button></div>
            </form>

login.ts

     userId:string
      password:string

     doLogin(){
 this.errorMessage = ''
    if (this.userId == undefined  || this.userId == ''){
      this.errorMessage = 'Authentication Failed'
      return
    }

    var user:UserModel = this.dataStore.findUser(this.userId.trim().toLowerCase())
    if (user == undefined || (user.password != this.password)){
       this.errorMessage = 'Authentication Failed'
      return
    }

    this.core.currentUser = user.userId
          this.router.navigate(['homepage'])
      }

app.routing.ts

const appRoutes: Routes = [ 
    {
        path: '',
        component: LoginPageComponent
    },
     {
        path: 'homepage',
        component: DynamicHomeComponent
    }

];

export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

При входе в систему URL-адрес становится ниже в случае сафари: https: // myurl / домашняя страница? userid = xxx & password = yyy

Какова ваша функция doLogin? Это просто заполнитель? Вы отправляете имя пользователя и пароль в качестве параметров URL, если да, это неправильно ...

Zachscs 16.05.2018 00:52

правильно, было бы глупо передавать user и pwd в качестве параметров url. Я не делаю этого по крайней мере намеренно. а в хроме этого не происходит. я только что добавил свой полный код входа, который у меня есть

Vik 16.05.2018 01:16

используйте этот html вместо этого скажите мне, если это все еще происходит <div> <div><input matInput placeholder = " User ID" name = "userId" [(ngModel)] = "userId"></div> <div><input matInput type = "password" name = "password" placeholder = " Password" [(ngModel)] = "password"></div> <div><button mat-raised-button (click) = "doLogin()">Sign In</button></div> </div>

Zachscs 16.05.2018 01:21

похоже, что тег формы вызывает эту проблему. удаление работает нормально. не уверен, почему

Vik 16.05.2018 01:26
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что у вас есть тег <form>, который неправильно реализует <form>. Если вы хотите использовать тег формы, используйте синтаксис <button type = "submit"></button> на кнопке отправки. Здесь у вас есть кнопка с методом (click) И у вас есть метод submit в теге формы. Отправка по умолчанию, которая представляет собой запрос на получение с параметрами URL, соответствующими формам, запускается inputs, поскольку ваша кнопка не имеет type = "submit" и имеет событие щелчка.

tl; dr => Используйте соглашения HTML-формы или просто используйте событие щелчка, но не то и другое вместе.

Другие вопросы по теме