У меня есть веб-приложение Catalyst, и я спрашиваю себя, можно ли войти в это приложение из соответствующего мобильного приложения, работающего в режиме реакции?Аутентификация и авторизация работают уже в приложении катализатора.
Спасибо
РЕДАКТИРОВАТЬ 1
Я попытался сделать POSTзапрос, но я получаю «Сетевой запрос не удался».Сервер катализатора работает.
Образец используемой мной собственной трески трески
export default class Login extends Component<{}> {
constructor(props){
super(props);
this.state = {
username: "",
password:"",
}
}
async _onLoginPressed(){
try {
let response = await fetch('http://localhost:port_number/login', {
method:'POST',
headers:{
'Accept':'application/json',
'Content-Type':'application/json'
},
body: JSON.stringify({
username: this.state.username,
password: this.state.password,
})
});
let res = await response;
console.log('response:' + res);
} catch (err) {
console.log(err);
}
}
render() {
return (
<View style={styles.container}>
<TextInput
placeholder="username"
returnKeyType="next"
style={styles.input}
onSubmitEditing={() => this.passwordInput.focus()}
keyboardType="default"
autoCorrect={false}
onChangeText={(value) => this.setState({username: value})}
value={this.state.username}
/>
<TextInput
placeholder="password"
secureTextEntry={true}
returnKeyType="go"
style={styles.input}
ref={(input) => this.passwordInput = input}
keyboardType="default"
autoCapitalize="none"
autoCorrect={false}
onChangeText={(value) => this.setState({password: value})}
value={this.state.password}
/>
<TouchableOpacity style={styles.buttonContainer} onPress={this._onLoginPressed.bind(this)}>
<Text style={styles.buttonText}> LOGIN</Text>
</TouchableOpacity>
</View>
);
}
}
И контроллер login.pm из веб-приложения катализатора:
sub index :Path :Args(0) :FormConfig {
my ( $self, $c ) = @_;
my $form = $c->stash->{form};
# Get the username and password from form
my $username = $c->request->params->{username};
my $password = $c->request->params->{password};
# If the username and password values were found in form
if ($username && $password) {
# Attempt to log the user in
if ($c->authenticate({ username => $username,
password => $password } )) {
# If successful, then let them use the application
$c->response->redirect($c->uri_for(
$c->controller('Root')->action_for('index')));
return;
# Set an error message
# $c->stash(error_msg => "Renew");
#}
} else {
# Set an error message
$c->stash(error_msg => "Incorrect parameter(s)");
}
} else {
# Set an error message
$c->stash(error_msg => "Empty parameter(s)")
unless ($c->user_exists);
}
if ($c->user_exists) {
if(DateTime->compare($c->user->get('expiration_date'),DateTime->now) == -1) {
$c->stash(error_msg => "Renew");
}
}
# If either of above don't work out, send to the login page
$c->stash(template => 'login.tt');
$c->forward('View::HTML');
}
Я не знаю, должен ли я использовать API аутентификации или нет.Я видел, что JWT может генерировать токены, но я немного озадачен тем, как разные стороны (сервер, веб-приложение, мобильное приложение) используют эти токены.Нужно ли мне писать конкретный код в моем контроллере для обработки этого вида аутентификации?