ユーザが認証されているかどうかをチェックし、そうでない場合は別のURLにリダイレクトする上位コンポーネントがあります。リダイレクトルータがサーバ上でリダイレクトしない
これは同形アプリですが、これはクライアント側で動作しますが、JSをオフにするとサーバーはリダイレクトされません。
if (!this.props.authenticated) {
this.context.router.push('/');
}
私は、サーバー上でこの文を打つことができるとthis.context.router
は戻っているが、何も起こりません。
全コンポーネント:
import { RouterContext, match } from 'react-router';
import { Provider } from 'react-redux';
import { renderToString } from 'react-dom/server';
import React from 'react';
import reactCookie from 'react-cookie';
import configureStore from '../../shared/store';
import routes from '../../shared/routes';
import assets from '../../public/assets.json';
import { AUTH_USER } from '../../shared/actions/types';
export default function (req, res) {
match({ routes, location: req.url }, (error, redirectLocation, renderProps) => {
if (error) return res.status(500).send(error.message);
if (redirectLocation) return res.redirect(302, redirectLocation.pathname + redirectLocation.search);
if (!renderProps) return res.status(404).send('Page not found');
const store = configureStore();
// use cookies to retrieve token
const unplug = reactCookie.plugToRequest(req, res); // eslint-disable-line no-unused-vars
const token = reactCookie.load('token');
// if we have a token, consider the user to be signed in
if (token) {
// we need to update application state
store.dispatch({ type: AUTH_USER });
}
const content = renderToString(
<Provider store={store}>
<RouterContext {...renderProps} />
</Provider>
);
const initialState = JSON.stringify(store.getState());
return res.render('index', { content, assets, initialState });
});
}
JSをオフにしました。あなたはそれがどのように機能すると思いますか? – activatedgeek
node.jsを使用した同形アプリ – Paul