ASP.NET MVC.Проверьте, авторизован ли пользователь из JavaScript - PullRequest
7 голосов
/ 14 апреля 2011

Я использую ASP.NET MVC Framework 3 и проверку подлинности с помощью форм. Я знаю, как проверить на стороне сервера, если пользователь авторизован для какого-либо действия (с [Authorize]), и я знаю, как проверить это в действии или представлении (с User.Identity.IsAuthenticated или другими членами 'User' ).

Что я пытаюсь сделать - это определить некоторый код 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 ]

20 голосов
/ 14 апреля 2011

Мне нравится идея в комментарии @ Gaby, хотя я не уверен, выполнимо ли это, поскольку у меня нет всего изображения в вашем проекте.

По крайней мере, вы можете упростить свой код, выполнив...

<script>
  var userAuthorized = @User.Identity.IsAuthenticated.ToString().ToLower();
</script>
1 голос
/ 14 апреля 2011

Другая пара опций будет заключаться в использовании пользовательского HTML-атрибута данных или создании простого ajax-запроса, который запрашивает сервер, аутентифицирован ли пользователь.

...