1.8. 使用 Curl 或浏览器以生产环境模式测试您的应用程序
要使用 Curl 或浏览器首先启动 PostgreSQL 服务器来测试您的应用。然后,在 JVM 或原生模式下运行您的应用程序。
1.8.1. 启动 PostgreSQL 服务器 复制链接链接已复制到粘贴板!
docker run --rm=true --name security-getting-started -e POSTGRES_USER=quarkus \
-e POSTGRES_PASSWORD=quarkus -e POSTGRES_DB=quarkus \
-p 5432:5432 postgres:17
docker run --rm=true --name security-getting-started -e POSTGRES_USER=quarkus \
-e POSTGRES_PASSWORD=quarkus -e POSTGRES_DB=quarkus \
-p 5432:5432 postgres:17
1.8.2. 编译并运行应用程序 复制链接链接已复制到粘贴板!
使用以下方法之一编译并运行 Quarkus 应用程序:
JVM 模式
编译应用程序:
使用 Quarkus CLI:
quarkus build
quarkus buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Maven:
./mvnw install
./mvnw installCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Gradle:
./gradlew build
./gradlew buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行应用程序:
java -jar target/quarkus-app/quarkus-run.jar
java -jar target/quarkus-app/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow
原生模式
编译应用程序:
使用 Quarkus CLI:
quarkus build --native
quarkus build --nativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Maven:
./mvnw install -Dnative
./mvnw install -DnativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Gradle:
./gradlew build -Dquarkus.native.enabled=true
./gradlew build -Dquarkus.native.enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
运行应用程序:
./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runner
./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runnerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.3. 使用 Curl 访问并测试应用安全性 复制链接链接已复制到粘贴板!
当应用程序运行时,您可以使用以下 Curl 命令之一访问其端点。
匿名连接到受保护的端点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 匿名连接到受保护的端点:
curl -i -X GET http://localhost:8080/api/admin
$ curl -i -X GET http://localhost:8080/api/admin HTTP/1.1 401 Unauthorized WWW-Authenticate: BasicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以授权用户身份连接到受保护的端点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您还可以使用浏览器访问相同的端点 URL。
1.8.4. 使用浏览器访问并测试应用安全性 复制链接链接已复制到粘贴板!
如果您以匿名方式使用浏览器连接到受保护的资源,则会显示基本身份验证表单,提示您输入凭证。
1.8.5. 结果 复制链接链接已复制到粘贴板!
当您提供授权用户的凭证时,如 admin:admin,Jakarta Persistence 安全扩展会验证并加载用户角色。admin 用户有权访问受保护的资源。
如果资源使用 @RolesAllowed ("user") 保护,用户 admin 不会被授权访问该资源,因为它没有分配给"user"角色,如下例所示:
curl -i -X GET -u admin:admin http://localhost:8080/api/users/me
$ curl -i -X GET -u admin:admin http://localhost:8080/api/users/me
HTTP/1.1 403 Forbidden
最后,名为 user 的用户被授权,安全上下文包含主体详情,例如用户名。