2015-08-04 3 views
1

Я пишу приложение с использованием JSch. Это приложение должно аутентифицировать пользователя один раз, а затем сохранить имя пользователя и пароль в этом сеансе. Для этого мне нужно подключиться к серверу только для проверки подлинности. Позже я буду читать только файлы с сервера, поэтому необходимы только разрешения SFTP.JSch аутентифицировать пользователя на сервере SSH

С этого момента я аутентифицирую пользователя с чтением содержимого предопределенного файла. Но это плохо для производительности, и файл должен существовать на сервере. Есть ли другое, лучшее решение?

EDIT: Я попытаюсь разъяснить мою проблему здесь, так что если вы не поняли, что я пытаюсь сделать, читайте дальше.

Что я хочу: У меня есть приложение, в котором вы должны сначала зарегистрироваться. Когда пользователь входит в систему, имя пользователя и пароль сохраняются в сеансе пользователей и будут использоваться для всех запросов. После входа в систему пользователь может прочитать некоторые файлы с сервера. Эти файлы доступны через SFTP с предыдущими сохраненными учетными данными.

Проблема: Я не знаю, как проверить учетные данные пользователей, как только он войдет в приложение, без доступа к файлам на сервере.

Мое обходное решение: Я пытаюсь решить проблему, прочитав предопределенный небольшой файл с сервера во время входа в систему и примите учетные данные, когда файл можно прочитать.

Мой вопрос: Я хотел бы знать, если есть какое-либо лучшее решение, например функция, чтобы просто аутентифицировать пользователя на сервере, поэтому я могу быть уверен, что введенные учетные данные верны. Или, может быть, что еще лучше, я могу открыть соединение с сервером, когда пользователь входит в систему и использует это соединение для дальнейших запросов, не отправляя учетные данные.

+0

@MartinPrikryl Я отредактировал мой вопрос, и надежда теперь понятна. Я аутентифицирую пользователя на сервере SSH. «необходимы только разрешения SFTP»: пользователю просто нужно читать файлы, не выполнять какие-либо команды в оболочке или что-то еще – j0h4nn3s

ответ

2

Просто создайте новый Session и позвоните .connect().

Session session = jsch.getSession("username", "host"); 
session.setPassword("password"); 
session.connect(); 
session.disconnect(); 

У вас должен быть установлен этот код для передачи.


В любом случае, вы правы, что лучшее решение, безусловно, должно держать сессию открытой.

Просто подключитесь, сохраните ссылку на экземпляр Session и используйте его для всех будущих передач.

Смежные вопросы