2011-03-14 27 views
5

我正在使用AspNetSqlMembershipProvider并为供应创建了我的页面。现在,我有这个工作,我想知道如何最好地利用整个网站的安全。对于我可以使用[授权]的控制器,但我下一步该去哪里?我的意思是,我只是使用Roles.IsUserInRole来解决观点问题,还有哪些地方需要进行检查。有关如何处理此问题的任何良好示例网站?MVC3安全提示

回答

7

不,你不应该Roles.IsUserInRole弄乱你的看法,这不是一个视图的责任检查的角色,这是一个控制器/授权过滤器的工作来填充您的视图模型,因此,鉴于你只需要:

@if (Model.ShouldDisplaySomeSection) 
{ 
    ... // some section 
} else { 
    ... // not authorized 
} 

另请注意,如果您使用标准[Authorize]属性修饰控制器操作,并且用户没有足够的角色,则此操作可能永远不会执行,并且视图也不会被触发。

就我个人而言,我发现Developer Highway Code作为一个非常有用的安全清单,即使它不限于MVC。

+0

+1为开发商公路代码链接...它的真棒! – Mahin 2011-11-02 10:58:08

3

我创造,我从Authorize属性导出并以我个人的属性我介绍了一个param[]阵列的enum类型,称为UserRoles,让我跳过魔弦的解决方案。

然后为混乱的意见。那么,我想你应该问问自己,如果你真的应该在那里写下的话。我认为你应该尽可能保持视图尽可能干净,并尽量在ViewModel中尽可能多地分类。如果你不能这样做,请考虑使用HTML Helper。