我正在使用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:这是一个可用性问题,当然我正在对服务器进行必要的检查。
答案 0 :(得分:20)
我喜欢@Gaby的评论中的想法,但我不确定这是否可行,因为我没有全面了解你的项目。
至少你可以通过......来简化你的代码。
<script>
var userAuthorized = @User.Identity.IsAuthenticated.ToString().ToLower();
</script>
答案 1 :(得分:1)
另外两个选项是使用自定义HTML data- attribute或创建一个简单的ajax请求,询问服务器是否对用户进行了身份验证。