我正在使用节点构建一个博客API。身份验证将使用具有两个角色的JWT : admin和user。
我的问题是,我应该使用什么方法来确保只有一个管理员才能在数据库中注册?
我正在考虑使用以下方法:第一个将' admin‘注册为用户名的用户将是admin,所有管理权限都将授予该用户。此用户将在注册和随后登录时被授予一个角色设置为admin的令牌。
如果另一个用户尝试向admin注册,它将无法工作,因为数据库将查找admin,并拒绝再次使用该用户名重新注册用户。
这种方法合适吗?还是我忽略了任何允许用户恶意获得管理权限的缺陷?是否也有更好的办法?
发布于 2018-07-15 10:02:33
我会反对这种方法,因为如果从数据库中删除管理用户并重新启动服务器(这可能会发生),那么下一个新注册的用户将自动成为admin。
接下来的事情是,管理状态应该由角色提供,而不是用户名。
因此,我建议的是,每个注册都可以创建一个只有user角色的用户,不能以这种方式创建管理员。
我将使用一些默认的日志凭据预置数据库中的管理员条目,然后允许他/她(或强迫他们)在这些凭据登录到应用程序后更改这些凭据。
但不要给注册表单/代码能力(某种随机)创建新的管理用户。
https://stackoverflow.com/questions/51342023
复制相似问题