2011-01-19 2 views
3

У меня есть сервер, где я работаю с базой данных и файлами с помощью приложения java. Когда я начинаю мое приложение я даю отчет о доступе к файлу на сервер, используя:Java - Файл доступа с аутентификацией пользователя

public static boolean folderExists(String folderPath) { 
    File folderToCheck = new File(folderPath); 
    return folderToCheck.exists(); 
} 

Каждый раз, когда я начинаю мое приложение (после нового перезапуска моего компьютера) я получаю ложный ответ, даже несмотря на то, сервер включен. Причина в том, что я должен дать аутентификацию в качестве другого пользователя. То, что я делаю, это доступ к серверу через Windows , где меня спрашивают имя пользователя/пароль, , после чего я получаю истинный ответ о доступе к файлу на сервере.

Есть ли способ указать имя пользователя/пароль для аутентификации через Java, , а не через Windows?

Спасибо

ответ

2

В «родной» среде Java IO (например, java.io.File) всегда наследует контекст безопасности пользователя, запускающего процесс JVM. Например, вы можете запустить приложение Java в качестве службы Windows с правильными учетными данными.

Проект JCIFS реализует CIFS (протокол файлового сервера SMB) и позволяет вам напрямую указывать имя пользователя/пароль.

Для примера см. API.

1

Я уверен, что нет никакого способа, чтобы предоставить FileAccess на Java, без Windows-Call.

Вы можете позвонить cacls file.log /e /t /p Everyone:f, но это будет зависеть от языка.

У меня была аналогичная проблема: How to change the file ACL in windows, if I only know the SID?

С Java7 может быть способ сделать это.

+0

Могу ли я это сделать, вызвав команду оболочки? Все в порядке со мной. Я использую Windows. Как будет командовать? –

+1

Я изменяю разрешение файла, выбирая * cacls * 'cacls file.log/e/t/p Everyone: f': http://support.microsoft.com/kb/318754/en Но имейте в виду, что пользователь с именем пользователя «Все», может иметь другое имя в локализованных окнах. Для немецких переведенных окон вызов должен быть 'cacls file.log/e/t/p Jeder: f' –

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