2016-07-04 3 views
0

я наткнулся на вопрос, используя следующий стартер репо для реакции: react-webpack-nodeмагазин/упорствовать сеанс во время сервера визуализации

Я Ussing sessionStorage для целей аутентификации и понял, что из-за сервер оказывающей природы этого стартера я не могу получить доступ это данные сессии в то время как приложение делает на сервере, т.е., чтобы защитить свои маршруты, я бы ожидать следующие работы:

import React from 'react' 
import { Route, IndexRoute } from 'react-router' 

import App from 'containers/App' 
import LoginPage from 'containers/LoginPage' 
import DashboardPage from 'containers/DashboardPage' 

export default (store) => { 
    const requireAuth = (nextState, replace, callback) => { 
    const token = sessionStorage.getItem('token') 
    if (!token) { 
     replace({ 
     pathname: '/login', 
     state: { nextPathname: nextState.location.pathname } 
     }) 
    } 
    callback() 
    } 

    const redirectAuth = (nextState, replace, callback) => { 
    const token = sessionStorage.getItem('token') 
    if (token) { 
     replace({ 
     pathname: '/' 
     }) 
    } 
    callback() 
    } 

    return (
    <Route path='/' component={App}> 
     <IndexRoute component={DashboardPage} /> 
     <Route path='/login' component={LoginPage} onEnter={redirectAuth} /> 
     <Route path='/dashboard' component={DashboardPage} onEnter={requireAuth} /> 
     <Route path='/logout' component={LoginPage} /> 
    </Route> 
) 
} 

Но это не так и я считаю, что это происходит из-за сессии быть определено на сервере.

ответ

1

Вы уже указали проблему. Вы можете попытаться использовать cookie для хранения токена, потому что cookie доступен как на клиенте, так и на сервере.

Смежные вопросы