ASP.NET MVC。检查用户是否已获得JavaScript授权

时间:2011-04-14 16:15:07

标签: javascript authentication asp.net-mvc-3 forms-authentication authorization

我正在使用ASP.NET MVC Framework 3和Forms身份验证。我知道,如果用户被授权进行某些操作([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 个答案:

答案 0 :(得分:20)

我喜欢@Gaby的评论中的想法,但我不确定这是否可行,因为我没有全面了解你的项目。

至少你可以通过......来简化你的代码。

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

答案 1 :(得分:1)

另外两个选项是使用自定义HTML data- attribute或创建一个简单的ajax请求,询问服务器是否对用户进行了身份验证。