我创建一个asp.net mvc应用程序,有用户的概念。每个用户都能够编辑自己的配置文件。例如:
> PersonID = 1可以通过转到http://localhost/person/edit/1来编辑他们的个人资料
> PersonID = 2可以通过转到http://localhost/person/edit/2来编辑他们的个人资料
没有什么特别令人兴奋的…
然而,我已经遇到一些麻烦与授权方案。在系统中只有两个角色,“管理员”和“DefaultUser”,但未来可能会有更多。
我无法使用常规的Authorize属性指定授权,因为两个用户都处于相同的角色(即“DefaultUser”)。
所以,如果我指定授权过滤器像这样:
[Authorize(Roles = "DefaultUser")]
那么就没有效果。 PersonID = 1可以进入和编辑自己的配置文件(因为他们应该能够),但他们也可以只是将URL更改为http://localhost/person/edit/2,他们有完全访问权限编辑PersonID = 2的配置文件(他们不应该去做)。
这是否意味着我必须创建自己的授权过滤器,检查用户在请求“拥有”的操作是否允许他们访问?也就是说,如果当前登录的人正在请求参数= 1的编辑操作,那么我需要进行自定义检查,以确保当前登录的人是PersonID = 1,如果是,请授权他们,如果没有,拒绝访问?
感觉我在这里缺少一些明显的东西,所以任何指导将不胜感激。