{"id":22421552,"url":"https://github.com/salihcanaydogdu/spring-security","last_synced_at":"2026-04-16T04:03:57.191Z","repository":{"id":264569727,"uuid":"884450498","full_name":"SalihCanAydogdu/spring-security","owner":"SalihCanAydogdu","description":"spring-security","archived":false,"fork":false,"pushed_at":"2024-11-25T04:20:32.000Z","size":634,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-26T21:20:34.582Z","etag":null,"topics":["api-security","email-verification","java","mysql-database","postman-api-test","role-based-access-control","security","spring","spring-security","two-step-authentication"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SalihCanAydogdu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2024-11-06T19:18:36.000Z","updated_at":"2024-11-25T04:20:35.000Z","dependencies_parsed_at":"2024-11-25T05:32:52.322Z","dependency_job_id":null,"html_url":"https://github.com/SalihCanAydogdu/spring-security","commit_stats":null,"previous_names":["salihcanaydogdu/spring-security"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SalihCanAydogdu/spring-security","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalihCanAydogdu%2Fspring-security","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalihCanAydogdu%2Fspring-security/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalihCanAydogdu%2Fspring-security/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalihCanAydogdu%2Fspring-security/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SalihCanAydogdu","download_url":"https://codeload.github.com/SalihCanAydogdu/spring-security/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SalihCanAydogdu%2Fspring-security/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31870517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api-security","email-verification","java","mysql-database","postman-api-test","role-based-access-control","security","spring","spring-security","two-step-authentication"],"created_at":"2024-12-05T17:08:30.992Z","updated_at":"2026-04-16T04:03:57.167Z","avatar_url":"https://github.com/SalihCanAydogdu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot Security Project\n\n## Technologies Used\n- **Java Version:** `17.0.7`\n- **Spring Boot Version:** `3.3.2`\n- **MySQL Version:** `8.0.40`\n\nThis project is configured with the above versions. You can refer to the following recommendations for compatibility with other versions.\n\n## Compatibility Guide\n\n### Java\n- **Minimum Required Version:** `Java 17.0.0`\n- **Recommended Version:** `Java 17.0.7` and above\n- **Not Recommended:** `Java 16` or lower versions may be incompatible with Spring Boot 3.x. While Java 18 and newer versions are supported, they might require additional configuration changes.\n\n### Spring Boot\n- **Minimum Required Version:** `Spring Boot 3.3.0`\n- **Recommended Version:** `Spring Boot 3.3.2` and above\n- **Compatible Versions:** The `Spring Boot 3.3.x` series is fully compatible with the project structure and works well with Spring Boot Security.\n- **Not Recommended:** `3.2.x` and below may lack some security features and could be incompatible with the current project setup.\n\n### MySQL\n- **Minimum Required Version:** `MySQL 8.0.20`\n- **Recommended Version:** `MySQL 8.0.40` and above\n- **Compatible Versions:** MySQL versions between `8.0.20` and `8.1.x` are compatible with this project and meet current security standards.\n- **Not Recommended:** `MySQL 5.x` and earlier versions may cause issues with some SQL queries and data types used in this project. MySQL `8.2.x` and above might require configuration adjustments not included here.\n\n## Email Configuration\n\nThis project uses Gmail's SMTP server for email notifications. To configure email sending in your application, update the following properties in the `application.properties` file:\n\n![Email Configuration](application.password.png)\n\n- **spring.mail.host**: `smtp.gmail.com`\n- **spring.mail.port**: `587`\n- **spring.mail.username**: Your Gmail email address (e.g., `your-email@gmail.com`)\n- **spring.mail.password**: An application-specific password generated from your Google account security settings.\n\n\u003e **Note**: For detailed instructions on setting up an application-specific password for Gmail, you can refer to [this video](https://www.youtube.com/watch?v=3vINS4tzjIw\u0026list=LL\u0026index=2). This video provides step-by-step guidance on enabling two-factor authentication and generating an application-specific password.\n\n#### Daily Email Limits\n- **Personal Gmail Accounts**: Gmail has a daily limit of **500 emails**. This limit may affect applications sending a high volume of emails.\n- **Corporate Gmail Accounts**: G Suite (Google Workspace) accounts generally have a higher daily email limit, allowing for **up to 2,000 emails** per day, depending on the subscription level.\n\n\u003e **Reminder**: Ensure that you have enabled two-factor authentication in your Google account, as generating an application-specific password requires it.\n\n## Database Configuration\n\nAfter setting up the project, you need to configure the `roles` table in the database with the following entries:\n\n![Roles Table](roles.png)\n\n- `ROLE_USER`\n- `ROLE_MODERATOR`\n- `ROLE_ADMIN`\n\nYou can insert these roles by running the following SQL query:\n\n```sql\nINSERT INTO roles (id, name) VALUES\n(1, 'ROLE_USER'),\n(2, 'ROLE_MODERATOR'),\n(3, 'ROLE_ADMIN');\n```\nThis setup is essential for role-based access control within the application. If the roles are missing, certain functionalities may not work as expected.\n\n# Key Features\n- **Security:** JWT-based authentication and role-based access control.\n- **Endpoint Protection:** @PreAuthorize annotations manage sensitive access at the API level.\n- **Token Management:** JWT tokens and user roles are stored in cookies for enhanced security.\n- **Code Readability:** Extensive comments are added throughout the code to facilitate understanding and maintainability.\n\n# Contributing\nI aimed to make this project as user-friendly and understandable as possible. If you notice any inconsistencies, have suggestions, or want to contribute, please feel free to reach out.\n\n# Contact\nFor questions, feedback, or contribution requests, contact me at: salih.can@aydogdutech.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalihcanaydogdu%2Fspring-security","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalihcanaydogdu%2Fspring-security","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalihcanaydogdu%2Fspring-security/lists"}