Vérifiez si vous êtes connecté :
<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,所有的子路由都生效么?
或者有别的什么办法
Alors comment contrôler le saut dans le code ?
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 :
history.listen
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
Commentaire le plus utile
Dans mon projet, j'ai essayé deux façons de rester connecté :
https://github.com/HeskeyBaozi/dva-blog-crud-demo