我觉得这是最大的白痴 - 我以为只有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]
属性 - 添加到这些方法中完全我需要/修复安全问题,但是,这些方法中的许多方法用于不同的控制器,我知道如果我可以将逻辑与控制器分开是最好的。我只是不确定最好的方法是什么。
在我开始拔掉所有头发之前,有人能指出正确的方向吗?
答案 0 :(得分:3)
您可以查看[Authorize]
属性。
更新:
或者您可以使用[NonAction]
属性或将方法设为私有。但在这种情况下,最好的做法是简单地将此逻辑移出控制器。控制器应仅包含控制器操作。其他逻辑应放在各自的层中。