如何通过登录React Admin来实现额外的自定义对话框(基于服务器响应)



我希望用户能够选择角色作为登录过程的一部分。在用户给出他的usernamepassword之后,服务器会发回他所拥有的角色。在authProviderlogin功能结束之前,如何实现用户可以从拥有的角色列表中选择角色的对话框?

login函数是一个常规的JavaScript函数,而不是React函数组件,所以我不能从中调用钩子(如useContext(。

我有两个猜测:

  1. LoginForm中,将async回调函数传递给login方法(由useLogin()创建(。服务器在login函数中用userroles响应后,用await调用此回调函数。在这个回调函数中,我可以使"选择角色"模式可见。我只是不明白,我如何才能实现程序等待,直到用户在"选择角色"模式中点击submit按钮,然后才返回一个已解析的Promise。这在JS中可能吗?

  2. 创建一个接受usernamepassword的"预登录"表单,将其发送到后端,后端返回角色,显示"选择角色"模式,并仅在用户提交角色时调用authProviderlogin函数。

我真的很好奇你对此的看法和想法。

useLogin钩子返回的login函数除了接受凭据之外,还接受第二个参数:redirectTo。您可以提供一个自定义路由,该路由将显示一个用于选择角色的专用页面,或者如果您真的想要一个模态,则可以显示带有子路由的登录页面。

一旦用户选择了其角色,您就可以使用useRedirect挂钩重定向到管理员主页。

最新更新