如何创建身份验证&基于用户ID的授权

时间:2018-04-07 13:11:38

标签: c# asp.net-mvc-5 asp.net-authorization asp.net-authentication

我对ASP.NET MVC5很新。我试图与用户和管理员一起构建一个预订应用程序。用户可以自己注册,预订项目,使用自己的个人资料(登录后)显示自己的预订信息。

我希望用户能够登录他们的个人资料并创建/阅读他们自己的预订。只有在登录后才能授权他们使用自己的个人资料。管理员应该可以访问所有控制器。

我试图找到一个关于这样做的教程,但我只能基于角色(例如;管理员)限制对控制器的访问,而不是特定用户使用自己的ID(例如; User1只能访问User1)信息)。

我感谢任何回应。非常感谢你。

1 个答案:

答案 0 :(得分:1)

这是一个多租户应用程序,因此您应该阅读一些有关多租户的内容。此外,这与声明授权非常适用,因此您也应该阅读它。

您可以创建一个简单的权限模型,具有3个权限(读取,创建,编辑)。每个用户都有一个或多个资源声明(资源可以是其配置文件的URL,或数据库中的用户ID)。每个资源声明可以具有用户可以在此资源上执行的操作的一个或多个权限。

这样,您就可以在自己的个人资料条目中为您的用户提供完整的权限(R,C,E)。此外,用户可以向其他用户授予一些权限(例如,他可以向所有人提供读取权限,或者向他的朋友编辑权限)。这使得用户成为他自己的个人资料的“管理员”,并且他可以向其他用户提供一些有限的权限。

您可以将权限分组为角色,因此当您为用户授予角色时,将自动为他创建所有权限(和声明)。

对于控制器操作,您可以查找一个ClaimsAuthorizeAttribute(在SO上有一些,如下所示:MVC5 Claims version of the Authorize attribute)。此外,还有一个很棒的库,在IdentityServer项目中有很多助手:https://github.com/IdentityServer