如何通过基于Spring Boot的身份验证来保护reactjs资源?

时间:2020-05-30 20:33:09

标签: reactjs spring-boot spring-security react-router-dom gradle-node-plugin

我当前的项目状态:

  • 我正在使用ReactJs(前端)和spring boot(后端)来开发Web应用程序。
  • 部署此应用程序时,我使用gradle-node-plugin
  • 将响应代码与spring boot jar打包在一起

问题:

  • 我知道我应该提供所有需要服务器身份验证的资源。 -但是,我很难理解是否有办法将我的react项目的某些组件/路由放在身份验证API后面。
  • 一个示例是Google文档,其中Google不允许您在未实际登录的情况下创建任何新文档(甚至看不到文本画布)。
  • 目前,只有从数据库中加载的数据受Spring安全性保护,但是我的React项目中有一个用Javascript编写的设计工具,我也想对其进行保护。
  • 这是通过Spring安全性实现的吗?还是我应该假定React项目下的所有内容都可以公开访问?
  • 换句话说,我该如何保护基于JavaScript的仅UI界面页面,在该页面中您不会进行任何后端调用来获取身份验证信息。

谢谢!

1 个答案:

答案 0 :(得分:0)

在页面加载时调用Authenticate API,以查看用户的会话是否已通过身份验证。我认为Spring Security可以做到这一点。根据响应,您可以限制路线。

<Route
      {...rest}
      render={({ location }) =>
        authenticateApiResponse.authenticated ? (
          <Redirect
            to={{
              pathname: "/profile",
              state: { from: location }
            }}
          />
        ) : (
          <Redirect
            to={{
              pathname: "/login",
              state: { from: location }
            }}
          />
        )
      }
    />

现在,只有通过后端API验证的用户才能进入个人资料屏幕。