【发布时间】:2016-02-13 13:13:31
【问题描述】:
我正在用 ASP.NET MVC 制作 web 项目。每个控制器调用服务来做一些操作。让我们看一个例子
public interface IProjectService
{
bool ActivateProject(int projectId);
//others
}
并实现类
public class ProjectService : IProjectService
{
private readonly IContextProvider _contextProvider;
public ProjectService(IContextProvider contextProvider)
{
_contextProvider = contextProvider;
}
public bool ActivateProject(int projectId)
{
using (var context = _contextProvider.GetContext())
{
var project = context.Projects.Where(p => p.ProjectId == projectId).SingleOrDefault();
project.Status = 1;
context.SaveChanges();
return true;
}
}
//others
}
在示例中,管理员想要激活项目。我在 jQuery 中进行了验证,因此管理员只能通过 projectId。
那么现在应该返回这个方法呢? 我应该让它无效吗? 假设数据库有错误,我应该抛出异常吗?这种操作的做法是什么?
【问题讨论】:
-
“我在 jQuery 中进行了验证” - 这不是您保护 Web 服务的方式。
-
你是什么意思?我的意思是方法的参数总是可以的
-
你永远不能相信用户的输入。仅仅因为您从 jQuery 传递值并不意味着有人绕过 jquery 并将数据直接发送给您。 100% 的时间验证服务器端。
-
我当然不明白,所以我应该抛出异常还是什么?我不知道在这些情况下是什么练习