Uygulamamın birinde yaptım, temelde sadece bir Kullanıcı Arayüzü'ne ihtiyacınız var, hiç kimse giriş yapmamışsa, ilk root sorgusunda bu null değerini döndürür ve daha sonra kimlik bilgilerini girerek oturum açma mutasyonuyla güncelleyebilirsiniz . Ana sorun, istekte bulunan çerez alanını işlememediği için, posta aktarma isteği içinde çerez veya oturum almaktır. Ben bir çerez ile kendi isteği göndermek ve doldurun
var LoginMutation = mutationWithClientMutationId({
name: 'Login',
inputFields: {
mail: {
type: new GraphQLNonNull(GraphQLString)
},
password: {
type: new GraphQLNonNull(GraphQLString)
}
},
outputFields: {
user: {
type: GraphQLUser,
resolve: (newUser) => newUser
}
},
mutateAndGetPayload: (credentials, {
rootValue
}) => co(function*() {
var newUser = yield getUserByCredentials(credentials, rootValue);
console.log('schema:loginmutation');
delete newUser.id;
return newUser;
})
});
Kullanıcılarıma tutmak için sayfa yenileme yoluyla açmış benim şema yan mutasyon
export default class LoginMutation extends Relay.Mutation {
static fragments = {
user:() => Relay.QL`
fragment on User {
id,
mail
}
`,
};
getMutation() {
return Relay.QL`mutation{Login}`;
}
getVariables() {
return {
mail: this.props.credentials.pseudo,
password: this.props.credentials.password,
};
}
getConfigs() {
return [{
type: 'FIELDS_CHANGE',
fieldIDs: {
user: this.props.user.id,
}
}];
}
getOptimisticResponse() {
return {
mail: this.props.credentials.pseudo,
};
}
getFatQuery() {
return Relay.QL`
fragment on LoginPayload {
user {
userID,
mail
}
}
`;
}
}
ve burada: Burada
müvekkilim mutasyon alan ... Bu iş için bunu yapmanın tek yolu ...
Teşekkürler, yarın deneyeceğim. GetUserByCredentials işlevinde 'Kendi isteğimi gönderir ve bir çerez alanıyla doldururum' mu? – Seneca
aslında bu gerçekten röle ile ilgili bir problemdir, posta isteğine göre çerezlere erişiminiz yoktur. Mutasyon müşteriye dönünceye kadar bekleyeceğim ve çerezimi doldurmak için kimlik bilgileriyle yepyeni bir ev yapımı istek yolladım ... ve daha sonra kullanıcı kimliğinizi html yoluyla ve kök sorgunuzda o userID'de geçirdiğinizde yenileyin. – Duduche
Sıfırlama işlevselliğinin yokluğunda (ki [Relay şu anda mevcut değil) (https://github.com/facebook/relay/issues/233)), bunu Relay üzerinden yapmak muhtemelen iyi bir fikir değildir. Relay, GraphQL verilerini dahili olarak önbelleğe aldığından ve bu veriler kullanıcıya özgü olabileceğinden, bu önbelleği _or_ oturum açmada geçersiz kılmanın bir yoluna ihtiyacınız vardır. Şu anda, bu etkinliklerden biri gerçekleştiğinde kullanıcıların tam sayfa yenilemesi yapmasını öneririz. – wincent