我正在使用willTransitionTo
静态方法进行身份验证。 Here’s the example我有点跟随。
我的transition.retry()
将与原始查询字符串一起转到原始路由。但是,查询字符串在开头缺少问号,因此它不会转到转换中预期的路径,而是转到/authToken=xyz123
所以,
transition.redirect
)反应到http://wickedsweet-react-site.com/waitforserverauth transition.retry()
)反应到http://wickedsweet-react-site.com/authToken=xyz123 oops 如何避免剥离?
?顺便说一句,我现在甚至不想要authToken查询字符串,因为我们已经过了authed,但是现在,这是次要问题。
这是我的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
,然后将重试使用重定向中止的原始转换。