{"id":18654413,"url":"https://github.com/steelcityamir/springboot3-springsecurity6-authentication","last_synced_at":"2026-05-09T10:05:25.979Z","repository":{"id":184001760,"uuid":"671147416","full_name":"steelcityamir/springboot3-springsecurity6-authentication","owner":"steelcityamir","description":"Starter app requiring authentication using Spring Boot 3.x and Spring Security 6.x","archived":false,"fork":false,"pushed_at":"2024-08-13T14:43:13.000Z","size":114,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-27T14:20:44.624Z","etag":null,"topics":["bootstrap","h2-database","java","login-system","spring-boot","spring-security","starter-template","thymeleaf"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steelcityamir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-07-26T16:39:27.000Z","updated_at":"2024-08-13T14:43:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"e3fcfe33-26d9-40eb-a890-d46f247c0984","html_url":"https://github.com/steelcityamir/springboot3-springsecurity6-authentication","commit_stats":null,"previous_names":["codebyamir/springboot3-springsecurity6-authentication","steelcityamir/springboot3-springsecurity6-authentication"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelcityamir%2Fspringboot3-springsecurity6-authentication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelcityamir%2Fspringboot3-springsecurity6-authentication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelcityamir%2Fspringboot3-springsecurity6-authentication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelcityamir%2Fspringboot3-springsecurity6-authentication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steelcityamir","download_url":"https://codeload.github.com/steelcityamir/springboot3-springsecurity6-authentication/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239467442,"owners_count":19643605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","h2-database","java","login-system","spring-boot","spring-security","starter-template","thymeleaf"],"created_at":"2024-11-07T07:15:18.804Z","updated_at":"2025-11-05T17:30:28.673Z","avatar_url":"https://github.com/steelcityamir.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://img.shields.io/badge/LANGUAGE-JAVA-f1941e.svg?style=for-the-badge\" alt=\"Java\"\u003e \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge\" alt=\"MIT License\"\u003e\n\n# Starter app with Spring Boot 3.x and Spring Security 6.x\nThis project is a starter application with authentication using Spring Boot 3.x and Spring Security 6.x.\n\n## Prerequisites\nTo run this project, you need:\n- JDK 17 or above\n\n## Getting Started\nTo get the project up and running on your local machine, do the following:\n\n### 1. Clone the repo:\n```bash\ngit clone https://github.com/codebyamir/springboot3-springsecurity6-authentication.git\n```\n\n### 2. Navigate to the project directory:\n\n```bash\ncd springboot3-springsecurity6-authentication/demo/\n```\n\n### 3. Build the project:\n\n```bash\n./mvnw clean install\n```\n\n### 4. Run the project:\n```bash\n./mvnw spring-boot:run\n```\n\nThis will start the application it will be accessible at `http://localhost:8080`.\n\n## Database\n\nThe app runs an in-memory H2 database and comes seeded with some sample users.\n\n- Users are stored in the `account` table.\n- Login attempts are stored in the `login` table.\n\n## Pages\n\n### Login page\n\n- URL: http://localhost:8080/login\n- Username: `admin@example.com`\n- Password: `admin`\n\n\n\u003cimg width=\"1469\" alt=\"Screenshot 2023-07-26 at 1 49 39 PM\" src=\"https://github.com/codebyamir/springboot3-springsecurity6-authentication/assets/54147931/92fa6c26-8c82-413a-989e-71476548ecaf\"\u003e\n\n### Register page\n\n- URL: http://localhost:8080/register\n- Must add valid SMTP settings in `application.properties` in order for the Register form to send an email confirmation. \n\n![image](https://github.com/codebyamir/springboot3-springsecurity6-authentication/assets/54147931/f22717bd-bc81-4732-9646-8a6ab3ddfd02)\n\n\n\n### Forgot Password page\n\n- URL: http://localhost:8080/forgot\n- Must add valid SMTP settings in `application.properties` in order for the Forgot Password form to send a password reset email. \n\n\u003cimg width=\"1460\" alt=\"image\" src=\"https://github.com/codebyamir/springboot3-springsecurity6-authentication/assets/54147931/37f121f9-ef15-4f00-9b52-724fbf3eab97\"\u003e\n\n\n\n### Reset Password page\n\n- URL: `http://localhost:8080/reset?token=\u003ctoken\u003e`\n\n\u003cimg width=\"1464\" alt=\"image\" src=\"https://github.com/codebyamir/springboot3-springsecurity6-authentication/assets/54147931/26d9f071-dde5-41d0-b6c0-2cb74268f9c5\"\u003e\n\n\n## Password Reset Flow\nThe password reset and email verify features use a stateless token. The advantage of a stateless token is that it doesn't need to be saved to the database.  And it is still associated with an email address and expiration.  The disadvantage is that the link can be used multiple times prior to expiration.\n\n1. User visits Forgot Password page at http://localhost:8080/forgot.\n2. User enters their email and clicks Submit.\n3. The app will lookup the email and if it finds an account that is enabled, it will generate a password reset token using a secret key, email, and expiration length.\n4. A confirmation message is always shown to the user.  For security purposes, the message doesn't reveal if the email is associated with an account.\n5. The app sends an email with a password reset link.\n6. The user clicks on the link and they are taken to the Reset Password page.\n  - If the token has expired or is invalid, the page will show an error.\n  - If the token is valid, the page will allow the user to enter a new password. A hidden input field on the form is populated with the user's email address.\n7. When the user submits the form, the app resets their password and redirects them back to the login page.\n\n\n## License\n\nThis project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE.md) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteelcityamir%2Fspringboot3-springsecurity6-authentication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteelcityamir%2Fspringboot3-springsecurity6-authentication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteelcityamir%2Fspringboot3-springsecurity6-authentication/lists"}