开发者

ASP.NET MVC. Check if user is authorized from JavaScript

I'm using ASP.NET MVC Framework 3 and Forms Authentication. I know, how to check on servers side, if the user is authorized for some action (with [Authorize]) and I know, how to check this within an action or a view (with User.Identity.IsAuthenticated or other members of 'User').

What I'm trying to do - is to define some JavaScript code, that will be executed differently, depending if the user is authorized.

Consider such script on the page:

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

Function Foo() is triggered by some event, say click. And I'd like to h开发者_运维知识库ave an ability to check, if user is authorized, on clients side.

The best solution I've came up with is to actually render global variables initialization in view. Like this:

@if(User.Identity.IsAuthenticated)
{
 <script>
  var userAuthorized = true;
 </script> 
}
else
{
 <script>
  var userAuthorized = false;
 </script> 
}

But it doesn't seems to me as a good approach. Are there any other ways? Thanks in advance.

PS: This is a usability issue, of course I'm doing necessary checks on server.


I like the idea in @Gaby's comment, though I am not sure whether that's doable since I don't have the whole picture on your project.

At the very least you can simplify your code by doing...

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


Another couple of options would be to use a custom HTML data- attribute or create a simple ajax request that asks the server if the user is authenticated.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜