Я реализовал очень простой HTTP-сервер, как описано here. Мне удалось получить аутентификацию, используя заголовок Authentication, но я не могу понять, как взять учетные данные из формы и использовать их для аутентификации с сервером. Как это обычно делается?Проверка подлинности Java HTTPServer - сторона клиента
Edit: (по peeskillet, чтобы показать код из ссылки)
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.BasicAuthenticator;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class SimpleHttpServer3 {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/info", new InfoHandler());
HttpContext hc1 = server.createContext("/get", new GetHandler());
hc1.setAuthenticator(new BasicAuthenticator("get") {
@Override
public boolean checkCredentials(String user, String pwd) {
return user.equals("admin") && pwd.equals("password");
}
});
server.setExecutor(null); // creates a default executor
server.start();
System.out.println("The server is running");
}
// http://localhost:8000/info
static class InfoHandler implements HttpHandler {
public void handle(HttpExchange httpExchange) throws IOException {
String response = "Use /get to authenticate (user:admin pwd:password)";
SimpleHttpServer3.writeResponse(httpExchange, response.toString());
}
}
static class GetHandler implements HttpHandler {
public void handle(HttpExchange httpExchange) throws IOException {
StringBuilder response = new StringBuilder();
response.append("<html><body>");
response.append("hello " + httpExchange.getPrincipal().getUsername());
response.append("</body></html>");
SimpleHttpServer3.writeResponse(httpExchange, response.toString());
}
}
public static void writeResponse(HttpExchange httpExchange, String response) throws IOException {
httpExchange.sendResponseHeaders(200, response.length());
OutputStream os = httpExchange.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
Я старался избегать Весны, так как он казался чуть более вершиной для моего очень простого проекта, но в конце мне кажется, что это мой лучший выбор –
@SamanthaCatania, я согласен, если вы пытаетесь сохранить его простым с Shiro, это отличная инфраструктура и не требует каких-либо дополнительных внешних зависимостей. – Alex
У Spring, похоже, больше поддержка браузеров на стороне клиента или я что-то пропустил? –