服务器端React Router用户认证

diego_c

我在Koa服务器上运行ReactRouter。

配置了我的Koa服务器,以便所有请求都指向'index.html'(使用koa-connect-history-api-fallback),然后将请求转发到ReactRouter。这一切都很好,除了我在弄清楚如何进行用户身份验证时遇到麻烦。

我想保护我的路线,以便用户必须登录才能访问任何路线。问题是我的登录页面是“路线”之一,这意味着用户必须登录才能访问登录页面!

有没有解决这个问题的好方法?例如,在我的Koa服务器中,我可以某种方式保护除“ / login”路由之外的所有路由吗?我已经阅读了这个示例示例负责ReactRouter内的身份验证,但是对您而言,在客户端进行身份验证似乎有些粗略。我可能会不在基地。

如果您好奇,我正在研究react-redux-starter-kit

多米尼克

您可以使用装饰器来验证顶级组件,例如

// auth.js
import React, {Component} from 'react';
import { connect } from 'react-redux';

export default function(ComposedComponent) {
    class Auth extends Component {
        static contextTypes = {
            router: React.PropTypes.object
        }

        componentWillMount() {
            if (!this.props.authenticated) {
                this.context.router.push('/');
            }
        }

        componentWillUpdate(nextProps) {
            if (!nextProps.authenticated) {
                this.context.router.push('/');
            }
        }

        render() {
            return <ComposedComponent {...this.props} />
        }
    }

    function mapStateToProps(state) {
        return {authenticated: state.auth.authenticated};
    }

    return connect(mapStateToProps)(Auth);
}

和:

@auth
...your component...

或者,如果您拥有auth模块,则可以以一种“减少冗余”的方式来实现:

function requireAuth(nextState, replace) {
  if (!auth.loggedIn()) {
    replace({
      pathname: '/login',
      state: { nextPathname: nextState.location.pathname }
    })
  }
}

render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <Route path="login" component={Login} />
      <Route path="logout" component={Logout} />
      <Route path="about" component={About} />
      <Route path="dashboard" component={Dashboard} onEnter={requireAuth} />
    </Route>
  </Router>
), document.getElementById('example'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React-Router无法在服务器端渲染

来自分类Dev

React Router / Hapi服务器端渲染错误

来自分类Dev

服务器端的用户确认

来自分类常见问题

客户端路由(使用react-router)和服务器端路由

来自分类Dev

来自服务器端表单的水锁认证

来自分类Dev

React,Redux和React-Router服务器端渲染

来自分类Dev

使用React,React-Router和Express进行服务器端渲染

来自分类Dev

react-router,镭和服务器端渲染-警告:react校验和无效

来自分类Dev

使用React-Router的服务器端渲染不起作用

来自分类Dev

使用React Router的服务器端身份验证流程

来自分类Dev

React-Router服务器端渲染和Ajax获取数据

来自分类Dev

如何在React-Router中以编程方式进行服务器端路由?

来自分类Dev

React router 4 服务器端渲染使用 IIS,而不是 express

来自分类Dev

react-router 不会在服务器端呈现组件

来自分类Dev

在服务器端从Android验证用户

来自分类Dev

服务器端登录用户帐户

来自分类Dev

重定向SSH用户服务器端

来自分类Dev

如何验证 Facebook 用户令牌服务器端

来自分类Dev

我能否以安全的方式与Firebase集成,而无需用户认证,而无需服务器端代码?

来自分类Dev

我能否以安全的方式与Firebase集成,而无需用户认证,而又无需服务器端代码?

来自分类Dev

用令牌认证客户端和服务器端的正确方法?

来自分类Dev

用令牌认证客户端和服务器端的正确方法?

来自分类Dev

React Router服务器端渲染错误:警告:失败的propType:在RoutingContext中未指定必需的prop`history`

来自分类Dev

如何使用 React-Router 的服务器端渲染中的 <Link> 标签更改 StaticRouter 的位置属性

来自分类Dev

NextJS OAuth2认证服务器端无快递

来自分类Dev

无法使用服务器端渲染器访问DOM-react 0.14.1,react-dom 0.14.1和react-router 1.0.0-rc3

来自分类Dev

如何强制用户从节点服务器上的服务器端注销并响应Web应用程序?

来自分类Dev

Iron Router和Meteor中的服务器端路由

来自分类Dev

使用Meteor和Meteorhacks:SSR和Iron-Router进行服务器端渲染

Related 相关文章

  1. 1

    React-Router无法在服务器端渲染

  2. 2

    React Router / Hapi服务器端渲染错误

  3. 3

    服务器端的用户确认

  4. 4

    客户端路由(使用react-router)和服务器端路由

  5. 5

    来自服务器端表单的水锁认证

  6. 6

    React,Redux和React-Router服务器端渲染

  7. 7

    使用React,React-Router和Express进行服务器端渲染

  8. 8

    react-router,镭和服务器端渲染-警告:react校验和无效

  9. 9

    使用React-Router的服务器端渲染不起作用

  10. 10

    使用React Router的服务器端身份验证流程

  11. 11

    React-Router服务器端渲染和Ajax获取数据

  12. 12

    如何在React-Router中以编程方式进行服务器端路由?

  13. 13

    React router 4 服务器端渲染使用 IIS,而不是 express

  14. 14

    react-router 不会在服务器端呈现组件

  15. 15

    在服务器端从Android验证用户

  16. 16

    服务器端登录用户帐户

  17. 17

    重定向SSH用户服务器端

  18. 18

    如何验证 Facebook 用户令牌服务器端

  19. 19

    我能否以安全的方式与Firebase集成,而无需用户认证,而无需服务器端代码?

  20. 20

    我能否以安全的方式与Firebase集成,而无需用户认证,而又无需服务器端代码?

  21. 21

    用令牌认证客户端和服务器端的正确方法?

  22. 22

    用令牌认证客户端和服务器端的正确方法?

  23. 23

    React Router服务器端渲染错误:警告:失败的propType:在RoutingContext中未指定必需的prop`history`

  24. 24

    如何使用 React-Router 的服务器端渲染中的 <Link> 标签更改 StaticRouter 的位置属性

  25. 25

    NextJS OAuth2认证服务器端无快递

  26. 26

    无法使用服务器端渲染器访问DOM-react 0.14.1,react-dom 0.14.1和react-router 1.0.0-rc3

  27. 27

    如何强制用户从节点服务器上的服务器端注销并响应Web应用程序?

  28. 28

    Iron Router和Meteor中的服务器端路由

  29. 29

    使用Meteor和Meteorhacks:SSR和Iron-Router进行服务器端渲染

热门标签

归档