У меня есть серверный клиент на стороне сервера, и я пытаюсь изменить страницу бритвы MainLayout, выполнив проверку входа в систему. В настоящее время я использую Blazored для сохранения локального хранилища, и в настоящее время я использую, чтобы увидеть, сохранен ли токен, чтобы увидеть, вошел ли пользователь в систему, однако я не уверен, как я перевожу это в операторе if на странице бритвы, потому что этохочет асинхронный метод.
Моя проверка входа в систему довольно проста, как показано ниже.
public async Task<bool> IsLoggedIn()
{
return await m_localStorage.ContainKeyAsync("token").ConfigureAwait(false);
}
На моей странице Razor я делаю эту проверку утверждения - что очевидно не работает, так как нетмодификатор async
@if (!await AppState.IsLoggedIn()) //Requires async modifier
{
<a href="Login" target="_blank">Login</a>
}
Я также пытался сделать это, используя свойство .Result, но это приводит к исключению: (System.AggregateException: 'Информация: выполнил неявный метод-обработчик, возвратил результат Microsoft. AspNetC) с внутренним исключением -> NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Но из того, что я вижу, AppState вводится правильно, и локальное хранилище, похоже, правильно вводится в AppState.
@if (!AppState.IsLoggedIn().Result)
{
<a href="Login" target="_blank">Login</a>
}
Так что мой вопрос в том, как правильно подойти к этому,Есть ли способ выполнить асинхронные методы на страницах бритвы?