我正在使用ASP.NET MVC Framework 3和表单例份验证。我知道如何在服务器端检查用户是否有权执行某些操作(使用[Authorize]),并且我知道如何在操作或 View (使用User.Identity.IsAuthenticated或其他“用户”成员)中检查此操作。

我正在尝试做的-定义一些JavaScript代码,具体取决于用户是否被授权,这些代码将以不同的方式执行。

考虑页面上的此类脚本:

<script>
 function Foo(){
  if(userAuthorized)
   alert("You\'re in the system");
  } else {
   alert("You\'re not authorized");
  }
<script>

函数Foo()是由某些事件(例如点击)触发的。我希望能够在客户端检查用户是否被授权。

我想出的最好的解决方案是在 View 中实际呈现全局变量的初始化。像这样:
@if(User.Identity.IsAuthenticated)
{
 <script>
  var userAuthorized = true;
 </script>
}
else
{
 <script>
  var userAuthorized = false;
 </script>
}

但是在我看来,这并不是一个好方法。还有其他方法吗?
提前致谢。

PS:这是一个可用性问题,当然我正在服务器上进行必要的检查。

最佳答案

我喜欢@Gaby的评论中的想法,但由于我对您的项目不了解,因此我不确定这是否可行。

至少您可以通过以下方式简化代码:

<script>
  var userAuthorized = @User.Identity.IsAuthenticated.ToString().ToLower();
</script>

10-07 19:24
查看更多