Dva: Como fazer gerenciamento de status de login global

Criado em 19 set. 2016  ·  25Comentários  ·  Fonte: dvajs/dva

Verifique se você está conectado:

  • Ao alternar as páginas (você só pode fazer onEnter = {isLogin} em cada sub-roteador?), Da seguinte maneira:
<Router history={history}>
      <Route path="/" component={MainLayout} onEnter={isLogin}>
        <IndexRoute component={User} />
        <Route path='tag' component={Tag} />
      </Route>
    <Route path="/login" component={Login} />
    <Route path="*" component={NotFound} />
</Router>
不能直接在父路由上加onEnter,所有的子路由都生效么?
或者有别的什么办法
  • Ao solicitar a api (você pode fazer o processamento de pré-resposta e pós-resposta em request.js e, em seguida, lançar o erro, que é processado no onerror global)

Então, como controlar o salto no código?

discussion

Comentários muito úteis

Em meu projeto, tentei duas maneiras de permanecer conectado:
https://github.com/HeskeyBaozi/dva-blog-crud-demo

Todos 25 comentários

Sugiro usar o segundo (usando o controle de solicitação), é muito simples, encapsule sua função de solicitação e, em seguida, trate-a de acordo com a situação (página de salto, prompt pop-up, etc.)

Processando na assinatura:

  1. Julgue se deseja entrar na página de destino por meio de history.listen
  2. Acione o efeito, julgue o status de login e pule de página no efeito

Para obter detalhes sobre como saltar, consulte o salto de página com base na ação @ dva-knowledge

Quero trazer o token de login em cada serviço de solicitação. Como posso escrever melhor neste caso?

@rrandom encapsulei um $ http fora de fetch e adicionei um token a este

@hbrls Seu token existe na loja?Se sim, como você escreve seu $ http

Armazene o token no cookie. Acho que a implementação de $ http deve ser semelhante a https://github.com/dvajs/dva-cli/blob/master/boilerplates/app/src/utils/request.js

@sorrycc Como faço para definir o token para o cookie no

Definir o token no cookie não é o que dva faz, mas o cabeçalho de resposta do lado do servidor o faz.

@sorrycc Existe alguma maneira de dora? Minha abordagem atual é que todas as APIs irão adicionar tokens no lado do servidor do site. Só descobri dva e dora ontem, que são muito boas.

Eu fiz ambos.
A primeira é pular para a página para determinar se o token é válido. Isso é feito principalmente para controlar as permissões de página da web.
O segundo tipo de solicitação de API para cada página traz o token. O servidor determina se ele tem permissão para acessar a API. Porque o servidor pode ser acessado por APP móvel

Você pode colocá-lo em localstorage e usar jsonwebtoken

As informações de login do usuário podem ser salvas em login_model (equivalente ao modelo global), então como obter essas informações de login_model em outros modelos?

Este eu encontrei o método yield select (global => global)

history.listen só pode ser processado depois que a página pula, certo? Não consegue processar antes de pular como onEnter ? Desta forma, todas as ações de carregamento de dados precisam estar concentradas no modelo, não podendo ser colocadas em componentDidMount , caso contrário a solicitação será emitida antes do processamento feito por history.listen .

@sorrycc Eu

O onEnter está no router.js? Ele pode ser processado por app._store.dispatch primeiro.

app.router(({ history, app }) => {});

A instância do aplicativo pode ser obtida aqui, https://github.com/dvajs/dva/blob/4cca243/index.d.ts#L70 .

@sorrycc onEnter é que o método acima foi usado para obter despacho em router.js com sucesso. Muito obrigado.

@sorrycc como obter despacho em request.js

Encapsulei uma camada de request.js. Depois que o usuário faz login, o servidor envia o token de volta e o salva no armazenamento local e coloca o token no cookie antes de buscar. O servidor verifica o token. Se a verificação do token falhar, o back-end retorna um 401 na resposta request.js. No método, o tratamento de erros unificado gera Erro. ​​Capture o erro correspondente no índice e, em seguida, use window.location = '/ login' para pular para a página de login

@ liSong5713 Por favor,

Em meu projeto, tentei duas maneiras de permanecer conectado:
https://github.com/HeskeyBaozi/dva-blog-crud-demo

@zhanbohui é o mesmo que selecionar rendimento (globalState => estado)) em vigor

Eu tenho que usar dva?

A página

Esta página foi útil?
0 / 5 - 0 avaliações