Dva: Comment faire la gestion globale de l'état de connexion

Créé le 19 sept. 2016  ·  25Commentaires  ·  Source: dvajs/dva

Vérifiez si vous êtes connecté :

  • Lorsque vous changez de page (pouvez-vous uniquement faire onEnter={isLogin} dans chaque sous-routeur ?), comme suit :
<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,所有的子路由都生效么?
或者有别的什么办法
  • Lors de la demande de l'API (vous pouvez effectuer le traitement de pré-réponse et de post-réponse dans request.js, puis générer une erreur, qui est traitée dans l'onerror global)

Alors comment contrôler le saut dans le code ?

discussion

Commentaire le plus utile

Dans mon projet, j'ai essayé deux façons de rester connecté :
https://github.com/HeskeyBaozi/dva-blog-crud-demo

Tous les 25 commentaires

Je suggère d'utiliser le second (en utilisant le contrôle de requête), c'est très simple, encapsulez votre fonction de requête, puis traitez-la en fonction de la situation (page de renvoi, invite contextuelle, etc.)

Traitement dans l'abonnement :

  1. Jugez s'il faut entrer dans la page cible via history.listen
  2. Déclenchez l'effet, jugez l'état de connexion et sautez de page dans l'effet

Pour plus de détails au saut de page basé sur l'action @dva-knowledge

Je souhaite apporter le jeton de connexion dans chaque service de requête, comment puis-je mieux l'écrire dans ce cas ?

@rrandom J'ai encapsulé un $http en dehors de fetch et

@hbrls Votre jeton existe-t-il dans le magasin ?Si oui, comment écrivez-vous votre $http

Stockez le jeton dans le cookie.Je pense que l'implémentation de $http devrait être similaire à https://github.com/dvajs/dva-cli/blob/master/boilerplates/app/src/utils/request.js

@sorrycc Comment définir le jeton sur le cookie dans

La définition du jeton dans le cookie n'est pas ce que fait dva, mais l'en-tête de réponse côté serveur le fait.

@sorrycc Y a-t- il un moyen de dora? Mon approche actuelle est que toutes les API ajouteront des jetons du côté serveur du site Web. Je n'ai découvert dva et dora qu'hier, qui sont plutôt bien.

J'ai fait les deux.
La première consiste à accéder à la page pour déterminer si le jeton est valide, principalement pour contrôler les autorisations de page du Web.
Le deuxième type de demande d'API pour chaque page apporte le jeton. Le serveur détermine s'il a l'autorisation d'accéder à l'API. Parce que le serveur est accessible par l'application mobile

Vous pouvez le mettre dans un stockage local et utiliser jsonwebtoken

Les informations de connexion de l'utilisateur peuvent être enregistrées dans login_model (équivalent au modèle global), alors comment obtenir ces informations de login_model dans d'autres modèles ?

J'ai trouvé la méthode yield select(global => global)

history.listen ne peut être traité qu'après le saut de page, n'est-ce pas ? Vous ne pouvez pas effectuer de traitement avant de sauter comme onEnter ? De cette façon, toutes les actions de chargement des données doivent être concentrées dans le modèle, et ne peuvent pas être placées dans componentDidMount , sinon la requête sera émise avant le traitement effectué par history.listen .

@désolé, je gère les problèmes de connexion dans onEnter. Comment puis-je obtenir le stockage ou l'expédition dans onEnter (ou routeur) ?

OnEnter est-il dans router.js ? Il peut d'abord être traité par app._store.dispatch.

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

L'instance d'application peut être obtenue ici, https://github.com/dvajs/dva/blob/4cca243/index.d.ts#L70 .

@sorrycc onEnter est que la méthode ci-dessus a été utilisée pour obtenir avec succès la répartition dans router.js. Merci beaucoup.

@sorrycc comment obtenir l'envoi dans request.js

J'ai encapsulé une couche de request.js. Une fois que l'utilisateur s'est connecté, le serveur renvoie le jeton et l'enregistre dans le stockage local, et place le jeton dans le cookie avant de le récupérer. Le serveur vérifie le jeton. Si la vérification du jeton échoue, le le backend renvoie un 401 dans la réponse request.js. Dans la méthode, la gestion unifiée des erreurs renvoie Error. Attrapez l'erreur correspondante dans l'index, puis utilisez window.location='/login' pour accéder à la page de connexion

@liSong5713 S'il dites- moi comment écrire les données dans le modèle global dans d'autres modèles. Pouvez-vous donner un exemple ?

Dans mon projet, j'ai essayé deux façons de rester connecté :
https://github.com/HeskeyBaozi/dva-blog-crud-demo

@zhanbohui est le même que yield select(globalState=>state)) en vigueur

Dois-je utiliser dva ?

La page

Cette page vous a été utile?
0 / 5 - 0 notes