У меня 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.
Я могу войти в систему без каких-либо проблем.
Прежде чем войти в систему, я попытался зайти http://localhost/Poject1/home/data, Показывает LogoutView.cshtml , как я ожидаю.
После входа в систему я пытался перейти по той же ссылке http://localhost/Poject1/home/data, Это показывает Data.cshtml , как я ожидаю.
Но я вышел из системы, используя приведенный ниже код, затем я попытался посетить 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>