transition.retry()似乎是从查询字符串中删除'?'

时间:2014-12-05 19:47:34

标签: reactjs react-router

我正在使用willTransitionTo静态方法进行身份验证。 Here’s the example我有点跟随。

我的transition.retry()将与原始查询字符串一起转到原始路由。但是,查询字符串在开头缺少问号,因此它不会转到转换中预期的路径,而是转到/authToken=xyz123

所以,

如何避免剥离??顺便说一句,我现在甚至不想要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,然后将重试使用重定向中止的原始转换。

0 个答案:

没有答案