如何只允许管理员用户在一个ASP.NET核心(使用个人身份验证)项目中创建帐户?

bhmjp9jg  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(118)

我正在创建一个网站使用ASP.NET核心与MVC的几个人将有帐户来管理数据库。因为匿名用户将能够查看网站,我不希望他们被允许创建帐户和混乱的东西。我不确定是否可以添加[Authorize(policy)]属性到创建帐户页面,因为ASP.NET核心模板隐藏了我需要添加它的页面。有什么办法可以做到吗?现在我想起来了,* 个人 * 认证允许你做这样的事情吗?
在你说这是一个重复的问题之前,我已经看过了以前的答案,发现他们只是在创建帐户页面上添加了[Authorize],我说我很确定我做不到,当然,除非我错过了什么。

ny6fqffe

ny6fqffe1#

退一步想想你在说什么。你想对匿名用户强制授权。这对你有意义吗?你怎么能授权你不认识的人呢?
如果你不想让任何人创建账户,你的操作就不能暴露给匿名用户。你应该删除模板生成的代码或者至少像其他答案建议的那样,将其隐藏在授权方案后面。
这就给你留下了一个问题,当创建用户的页面无法访问时,如何创建用户。我过去曾用几种方法处理过这个问题:
1.在应用程序启动时以编程方式创建具有管理员权限的用户(如果尚不存在)。此用户有权访问应用内的页面(通常是单独区域上的管理员面板),他/她可以在其中创建其他用户。您可以使用此帐户向其他帐户授予访问权限,并根据需要分配适当的角色。或者,
1.让应用程序在启动时检查初始化,如果以前没有这样做过,显示一个工作流,允许你创建一个管理员帐户(有点像第一次安装的步骤)。一旦创建,你使用它的方式与选项1相同。
在这两种情况下,您都需要根据需要将Authorize属性应用于控制器和/或操作,并且需要一个“admin”工具,具有适当权限的用户可以在其中进行管理。

相关问题