gpt4 book ai didi

asp.net-mvc - 使用角色的 asp.net mvc 授权

转载 作者:行者123 更新时间:2023-12-03 10:44:05 26 4
gpt4 key购买 nike

我正在创建一个具有用户概念的 asp.net mvc 应用程序。每个用户都可以编辑自己的个人资料。例如:

  • PersonID=1 可以通过转到 http://localhost/person/edit/1 来编辑他们的个人资料
  • PersonID=2 可以通过转到 http://localhost/person/edit/2 来编辑他们的个人资料

  • 没有什么特别令人兴奋的......

    但是,我在授权方案方面遇到了一些麻烦。目前系统中只有两个角色,“管理员”和“默认用户”,但将来可能会有更多。

    我不能使用常规的 Authorize 属性来指定授权,因为两个用户的角色相同(即“DefaultUser”)。

    所以,如果我像这样指定授权过滤器:
    [Authorize(Roles = "DefaultUser")]

    那么就没有效果了。 PersonID=1 可以进入并编辑他们自己的个人资料(他们应该可以这样做),但他们也可以将 URL 更改为 http://localhost/person/edit/2并且他们也拥有编辑 PersonID=2 的个人资料的完全访问权限(他们不应该这样做)。

    这是否意味着我必须创建自己的授权过滤器,在允许他们访问之前检查用户请求的操作是否“属于”他们?也就是说,如果当前登录的人正在请求参数= 1的编辑操作,我是否需要进行自定义检查以确保当前登录的人是PersonID = 1,如果是,则授权他们,如果没有,拒绝访问?

    感觉我在这里遗漏了一些明显的东西,所以任何指导都将不胜感激。

    最佳答案

    也许你可以组织 Controller Action ,使 URL 更像 http://localhost/person/editme并显示当前登录用户的编辑表单。这样,用户就无法破解 URL 来编辑其他人。

    关于asp.net-mvc - 使用角色的 asp.net mvc 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390930/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com