如何阻止用户仅更新数据库中的行。
例如: 用户负责学校。他们可以改变那所学校的领域,但只能改变那所学校。
因此:SchoolId,OwnerID,Name,PhoneNumber
我实现了一个功能: CanEditSchool(SchoolID)如果用户不是特定学校的所有者,则会抛出异常。
有更好的解决方案吗?我正在使用linq2sql作为orm。
答案 0 :(得分:1)
根据您处理datacontext的方式,您可以在datacontext上使用LoadOptions。
http://msdn.microsoft.com/en-us/library/Bb386915(v=VS.90).aspx
答案 1 :(得分:0)
一个似乎不是最优的解决方案是为用户创建一个视图,其中只包含其辖区内的学校:
CREATE VIEW `v_jimmy` AS
SELECT * FROM `schools`
WHERE SchoolId = 5;
答案 2 :(得分:0)
您的控制器操作应检查您的安全功能,以确保登录用户能够编辑相关项目。如果没有,您应该将它们发送到“拒绝许可”类型的页面/视图。
但是,CanEditSchool
函数不需要抛出异常。它的名字暗示它将返回bool
; true
如果他们可以编辑它,false
如果没有。