Josh Cummings 0786b6f766 Update to Spring Securtiy 6.5.0-SNAPSHOT 1 mês atrás
..
gradle 1ce2c14dba Update to Gradle 8.10.2 10 meses atrás
src 42fbd1678c Fix Checkstyle in AOT Data 11 meses atrás
.sdkmanrc 56033d76f8 Add Spring Data AOT Sample 11 meses atrás
README.adoc 56033d76f8 Add Spring Data AOT Sample 11 meses atrás
build.gradle 93ebfca7b8 Make Javaformat and AOT work together 11 meses atrás
gradle.properties 0786b6f766 Update to Spring Securtiy 6.5.0-SNAPSHOT 1 mês atrás
gradlew 56033d76f8 Add Spring Data AOT Sample 11 meses atrás
gradlew.bat 56033d76f8 Add Spring Data AOT Sample 11 meses atrás
settings.gradle 56033d76f8 Add Spring Data AOT Sample 11 meses atrás

README.adoc

= Spring Data AOT Sample

To compile this project, you will need to use a special Java compiler.
If you are using SDKMan!, then the version will be correctly selected for you.
Or, you can do the following:

```bash
sdk use java 23.0.5.r17-nik
```

After that, you can compile like so:

```bash
./gradlew nativeCompile
```

Once compiled, you can run like so:

```bash
./build/native/nativeCompile/data
```

Then you can query for messages using `luke/password` and `rob/password`.

Because the domain objects are secured, you will see a subset of fields with `luke`.

For example, querying `/` with `luke`, you'll see:

```json
...
{
"created": "2014-07-12T16:00:00Z",
"id": 112,
"summary": "Is this secure?",
"text": "This message is for Luke",
"to": {
"email": "luke@example.com",
"id": "luke",
"password": "password"
}
}
...
```

However, with `rob`, you'll also see `firstName` and `lastName` like so:

```json
...
{
"created": "2014-07-12T04:00:00Z",
"id": 102,
"summary": "Is this secure?",
"text": "This message is for Rob",
"to": {
"email": "rob@example.com",
"firstName": "Rob",
"id": "rob",
"lastName": "Winch",
"password": "password"
}
}
...
```

You can also change the message text.
To do this, copy and paste the `X-CSRF-TOKEN` and `Cookie: JSESSION` headers and include them in a `PUT :8080/102` request.

An example of this request using HTTPie can be seen below:

```bash
echo -n "updated message" | http -a rob:password PUT :8080/102 "X-CSRF-TOKEN: {copied from GET request}" "Cookie: JSESSIONID={copied from GET request}"
```

Read more about the https://docs.spring.io/spring-security/reference/servlet/authorization/method-security.html#authorize-object[`@AuthorizeReturnObject`] and https://docs.spring.io/spring-security/reference/servlet/authorization/method-security.html#fallback-values-authorization-denied[]`@DeniedHandler`] in the Spring Security Reference.