antd pro 免登录

71次阅读
没有评论

src/app.jsx

onPageChange: () => {
const { location } = history; // 如果没有登录,重定向到 login

  if (!initialState?.currentUser && location.pathname !== loginPath) {
    history.push(loginPath);
  }
},

解决办法很简单,判断一下路径,不需要权限的路径就直接不要重定向就行了。
const needLoginPath = [
  '/manage_admin/user_manage',
  '/manage_admin/login_manage',
];

    onPageChange: () => {
      const { location } = history; // 如果没有登录,重定向到 login

      if (!initialState?.currentUser && location.pathname !== loginPath && needLoginPath.indexOf(location.pathname) > -1) {
        history.push(loginPath);
      }
    },

在绕过权限后出现问题:有些网页我设置是只有管理员权限才能看到的,设置为:access:canAdmin
当登录非管理员用户,看不到这些路径。
没登录时可以看到这几个路径。
问题出在access的判定中。
//canAdmin: currentUser && currentUser.acces===’admin’
// 需要改成
canAdmin:currentUser !== undefined && currentUser.access===’系统管理员’

可以看到第一行,原本的管理员权限判定使用的是currentUser,当你登录了非管理员时,返回的是false。当你没登录时返回的是undefined。antdpro的权限管理没有处理undefined,所以没登录时会看到这些路径。
如下图,没有明确判断canUser!==undefined的时候,输出了undefined。

解决方法就是明确判断currentUser !== undefined,让权限正确的输出布尔型。

正文完
 
评论(没有评论)