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, который запрашивает сервер, аутентифицирован ли пользователь.