2011-10-20 58 views
0

我有一个onclick,它不应该提供给匿名用户。从JavaScript中查看数据访问授权标志(ASP.NET MVC)

我目前砍死一起使用标志元素:

@if (ViewBag.User != null) 
{ 
    <div id="userAuthenticated"></div>       
} 

和jQuery中:

$('.whatever').click(function() { 
    if ($('#userAuthenticated').length) { 
     // ... do something 
    } 
}); 

这只是感觉有点讨厌,但我不知道什么更好的办法正在做。处理这种情况的最佳做法是什么?是否有一些我不知道的巧妙技巧?

回答

1

相反,我会建议拥有两个单独的javascript文件,mysite-authorized.jsmysite-anon.js,并且仅为授权用户从anon文件中排除任何功能。然后,在您的布局文件中,根据授权级别设置要提供的js文件。

这样可以避免任何授权标志,这可以被精明的用户避免。

P.S.

在你看来,你已经检查授权的手段:

if (this.ViewContext.HttpContext.User.Identity.IsAuthenticated) 
{ 
    // authenticated user js file here 
} 
else 
{ 
    // anon user js file here 
} 
+0

我认为这是在第一次读一个坏主意,但已经想过这个问题我大概可以工作是这样的,而不会引入任何代码复制。感谢您的建议。 – fearofawhackplanet

+0

我的许多想法起初看起来很糟糕(有些仍然是第二,第三,......)。在这里,您可以使用这个机会将您的JavaScript代码放入两个或三个独立的js文件,一个具有所有用户所需功能的基本文件,一个授权文件,其中包含特定于授权用户的功能,以及是否有任何功能匿名用户是唯一的,也是一个文件。如果这有帮助,请标记为已回答。 – counsellorben

+0

嗯,我宁愿不必为多个文件提供服务,但现在我已经走过了这条路线,它的工作原理非常好。谢谢。 – fearofawhackplanet