相关疑难解决方法(0)

ASP.NET MVC属性只允许用户编辑自己的内容

我有一个调用的控制器方法Edit,用户可以编辑他们创建的数据,如此...

public ActionResult Edit(int id)
{
    Submission submission = unit.SubmissionRepository.GetByID(id);
    User user = unit.UserRepository.GetByUsername(User.Identity.Name);

    //Make sure the submission belongs to the user
    if (submission.UserID != user.UserID)
    {
        throw new SecurityException("Unauthorized access!");
    }

    //Carry out method
}
Run Code Online (Sandbox Code Playgroud)

这种方法工作正常,但是放入每个控制器的Edit方法都有点乱.每个表总是有一个,UserID所以我想知道是否有一种更简单的方法来通过[Authorize]属性或其他机制自动化这个代码更清洁.

.net c# security authentication asp.net-mvc

18
推荐指数
1
解决办法
1万
查看次数

Web Api - 如何阻止用户访问其他用户的数据

我一直在对 Web api 上的身份验证和授权进行一些研究。我了解身份验证(用户名/密码)和基于角色的授权,但我感到困惑的是数据授权。

假设您有一个经过身份验证的用户(用户 ID 1),是一名管理员,并且与公司 ABC 关联。我有其他与 ABC 关联的用户,其用户 ID 1 可以更新。现在我想更新与 ABC 关联的用户 id 2 的名称(我也应该有权访问)。我需要传递一些内容来识别用户 2,即放入 /user/2 加上发布数据。我知道在服务器端,用户 1 可以更新用户 2,因为他已经过身份验证并且是管理员。

现在我有与公司 XYZ 关联的用户 100。用户 100 不应该能够更新用户 2。这就是我很难找到相关信息的原因。

有哪些方法/博客/任何内容可以就如何防止用户 100 访问其公司外部的数据提供一些有用的想法。

我的想法是,我可以将登录的用户 ID(我根据身份验证获取服务器端)传递到更新存储过程中,并进行检查以确保用户 ID 与正在更新的用户关联。对我来说,这似乎乏味且丑陋,因为每个存储过程都需要一个用户 id 参数和检查以确保他们可以访问他们正在访问的数据(也许这是正确的)。

我知道如何进行身份验证以及如何检查基于角色的授权,缺少的部分是基于资源的授权。

谢谢您的帮助。

有没有人有任何见解。很难相信基于角色的授权就足够了。

authorization asp.net-web-api

5
推荐指数
1
解决办法
2214
查看次数