Как проверить, вошел ли пользователь в систему или нет с контроллера в Token Based Authentication с использованием MVC 5? - PullRequest
0 голосов
/ 25 февраля 2019

У меня ActonResult Data() в HomeController, я хочу показать Data.cshtml единственный пользователь, который уже вошел в систему. В противном случае он вернет LogoutView.cshtml page

HomeController

public ActionResult Data()
    {
        bool isAuthenticated = User.Identity.IsAuthenticated;
        if(isAuthenticated)
        {
            return View();
        }
        else
        {
            return View("LogoutView");
        }
    }

Я использую аутентификацию на основе токенов в MVC5.

  1. Я могу войти в систему без каких-либо проблем.

  2. Прежде чем войти в систему, я попытался зайти http://localhost/Poject1/home/data, Показывает LogoutView.cshtml , как я ожидаю.

  3. После входа в систему я пытался перейти по той же ссылке http://localhost/Poject1/home/data, Это показывает Data.cshtml , как я ожидаю.

  4. Но я вышел из системы, используя приведенный ниже код, затем я попытался посетить http://localhost/Poject1/home/data, Но он все равно показывает Data.cshtml

<input id="btnLogout" type="button" value="Logout" />
<script type="text/javascript">
    $(document).ready(function () {
        $('#btnLogout').click(function () {
            console.log('Get Token = '+sessionStorage.getItem('accessToken'))
            sessionStorage.removeItem('accessToken');
            console.log('After remove Token = ' + sessionStorage.getItem('accessToken'))   // it print null
        });
    })
</script>

Сценарий входа в систему

<script type="text/javascript">
    $(document).ready(function () {
        $('#btnSignIn').click(function () {
            var loginData = {
                grant_type: 'password',
                username: $('#txtSignInEmail').val(),
                password: $('#txtSignInPassword').val()
            };

            $.ajax({
                type: 'POST',
                url: 'Token',
                data: loginData
            }).done(function (data) {

                console.log('Username =='+data.userName);

                $('#user').text(data.userName)
                $('#UserName').text(JSON.stringify(data.userName));
                // Cache the access token in session storage.
                console.log('Login Success');
                sessionStorage.setItem('accessToken', data.access_token);
            }).fail(function (showError) {
                $('#signInError').text(JSON.stringify(showError));
            });
        });
    })
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...