我正在使用willTransitionTo
静态方法进行身份验证。 这是我有点遵循的例子。
我transition.retry()
将与原始查询字符串一起前往原始路线。但是查询字符串在开头缺少问号,因此不是转到过渡中预期的路线,而是/authToken=xyz123
所以,
- 用户访问http://wickedsweet-react-site.com/?authToken=xyz123
- 将路由(通过
transition.redirect
)反应到http://wickedsweet-react-site.com/waitforserverauth - 服务器正在验证并返回
- 将路由(通过
transition.retry()
)反应到http://wickedsweet-react-site.com/authToken=xyz123 哎呀
我怎样才能避免剥离?
?顺便说一句,此时我什至不需要 authToken 查询字符串,因为我们已经进行了身份验证,但现在,这是次要问题。
这是我的willTransitionTo
方法。
mixins: [Reflux.connect(stores.AuthDataStore, 'auth_data')],
statics: {
willTransitionTo: function (transition, params, query) {
var auth_data = stores.AuthDataStore.getData();
if (!auth_data.authenticated) {
some_global_object.authTransition = transition;
if (query.authToken && !_.isEmpty(query.authToken)) {
auth.authenticate({token: query.authToken}); // tells server to auth
transition.redirect("/waitforserverauth", params, {}); //don’t want the query-string after this point
return;
}
}
}
}
对于身份验证,我将一个令牌传递给一个名为“authToken”的查询字符串参数。当用户传入 authToken 时,我willTransitionTo
会要求服务器进行身份验证并将用户重定向到侦听服务器身份验证的 WaitingForAuth 页面。这是 WaitingForAuth React 页面。
var WaitingForServerAuth = React.createClass({
mixins: [Reflux.connect(stores.AuthDataStore, 'auth_data')],
componentWillUpdate: function(nextProps, nextState) {
if (nextState.auth_data.authenticated && some_global_object.authTransition) {
some_global_object.authTransition.retry();
}
},
render: function() {
return (<div><Loading /></div>);
}
});
当服务器返回 auth 并且令牌有效时,WaitingForAuth 实现componentWillUpdate
,然后重试因重定向而中止的原始转换。