我的应用程序中的MVC安全问题 - 分离逻辑的最佳策略?

时间:2011-10-19 14:28:42

标签: asp.net-mvc-3

我觉得这是最大的白痴 - 我以为只有ActionResults被送回了客户。出于这个原因,我的控制器中有一堆“辅助”方法。

我只是尝试通过网址访问它们,我发誓当我看到它们可以到达时我几乎疯了! ......幸运的是,还没有人发现这一点。

我有一种这样的方法,我一遍又一遍地称之为:

public User GetCurrentUser()
{    
    User user = db.Users.SingleOrDefault(x => x.UserName == User.Identity.Name);
    return user;
}

我刚在Models文件夹中创建了一个名为“Logic”的文件夹,我试图将代码分开 - 我只是想知道调用代码,命名空间等的最佳策略是什么?

在上面的示例中,我使用的User.Identity.Name仅继承自Controller。如果我加上这个,我就回到第一阶段了!

感谢Darin Dimitrov,我现在知道[NonAction]属性 - 添加到这些方法中完全我需要/修复安全问题,但是,这些方法中的许多方法用于不同的控制器,我知道如果我可以将逻辑与控制器分开是最好的。我只是不确定最好的方法是什么。

在我开始拔掉所有头发之前,有人能指出正确的方向吗?

1 个答案:

答案 0 :(得分:3)

您可以查看[Authorize]属性。


更新:

或者您可以使用[NonAction]属性或将方法设为私有。但在这种情况下,最好的做法是简单地将此逻辑移出控制器。控制器应仅包含控制器操作。其他逻辑应放在各自的层中。