ASP.NET В MVC. Проверьте, авторизован ли пользователь из JavaScript
я использую ASP.NET MVC Framework 3 и проверка подлинности форм. Я знаю, как проверить на стороне серверов, если пользователь авторизован на какое-то действие (с [Authorize]
) и я знаю, как проверить это в действии или представлении (с User.Identity.IsAuthenticated
или другие члены "пользователя").
что я пытаюсь сделать-это определить некоторый код JavaScript, который будет выполняться по-разному, в зависимости от того, авторизован ли пользователь.
рассмотрим такой скрипт на страница:
<script>
function Foo(){
if(userAuthorized)
alert("You're in the system");
} else {
alert("You're not authorized");
}
<script>
функции Foo()
запускается каким-то событием, скажем, щелчком. И я хотел бы иметь возможность проверять, авторизован ли пользователь, на стороне клиентов.
лучшее решение, которое я придумал, - это фактически визуализировать инициализацию глобальных переменных. Вот так:
@if(User.Identity.IsAuthenticated)
{
<script>
var userAuthorized = true;
</script>
}
else
{
<script>
var userAuthorized = false;
</script>
}
но мне это не кажется хорошим подходом. Есть ли другие способы? Спасибо заранее.
PS: это проблема юзабилити, конечно, я делаю необходимое проверяет сервер.
2 ответов
Мне нравится идея в комментарии @Gaby, хотя я не уверен, что это выполнимо, так как у меня нет всей картины в вашем проекте.
по крайней мере, вы можете упростить ваш код делает...
<script>
var userAuthorized = @User.Identity.IsAuthenticated.ToString().ToLower();
</script>
еще несколько вариантов было бы использовать пользовательский HTML data-attribute или создайте простой запрос ajax, который запрашивает сервер, аутентифицирован ли пользователь.