2

我正在使用willTransitionTo静态方法进行身份验证。 这是我有点遵循的例子。

transition.retry()将与原始查询字符串一起前往原始路线。但是查询字符串在开头缺少问号,因此不是转到过渡中预期的路线,而是/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,然后重试因重定向而中止的原始转换。

4

0 回答 0