Я хотел бы добавить «охранников» к определенным URL.Эти URL должны быть доступны только когда пользователь вошел в систему. Если я не вошел в систему, я хочу перенаправить пользователя на страницу входа.После успешного входа в систему я хочу, чтобы пользователь был «перенаправлен» на исходный хеш.
Это мой маршрутизатор
@dom
def outlet: Binding[Node] = {
<div>{
route.state.bind match {
case s: View if UserService.hasRole("admin") => s.render.bind
case s if !UserService.isLoggedIn() => loginPage.render(Some(s.hash)).bind
case _ => <div>Unknown</div>
}
}</div>
loginPage
затем меняет хеш окна после успешного входа:
def login(username: String, password:String, orginalHash: Option[String]) =
UserService.login(username,password).andThen{
case Success(v) =>
println(s"changing hash to $orginalHash")
orginalHash.map(_.substring(1)).foreach(window.location.hash=_)
case Failure(e) => message.value = "Wrong username/password"
}
Тем не менее, я думаю, потому что хэш фактически не изменяется, он не обновляет страницу:
- Скажем, я перехожу на
/index.html/#/foobar
- Включается «охранник» и отображается страница входа (URL остается
/index.html/#/foobar
) - Значение
orginalHash
равно #/foobar
- , изменяя
location.hash
на /foobar
ничего не делает
Есть ли способ манипулировать роутером.Возможно, есть API для изменения текущей страницы?