[Spring boot + Spring Security] Role

1. Prepare Tools

  • IDE: Netbean 8.2
  • JDK: 1.8
  • Maven: 3.5.0 ## 2. Target Build project thỏa mãn các yêu cầu sau:
  • Sử dụng spring boot + spring security
  • Chỉ role ADMIN được access link /admin, role USER được access link /user
  • Sử dụng annotation configuration thay cho xml configuration.
    

    3. Maven dependency

        <!-- Core starter, including auto-configuration support, logging and YAML -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- Starter for using Spring Security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!-- Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    

    4. Project setup and description

    1. Basic Project

    https://viblo.asia/p/spring-boot-spring-security-basic-project-1VgZvEmpKAw

    2. EnableGlobalMethodSecurity

    Spring hỗ trợ 3 kiểu phần quyền theo role.

  • prePostEnabled: Cho phép phân quyền sử dụng annotation@PreAuthorize/@PostAuthorize - annotation của spring

  • securedEnabled: Cho phép phân quyền sử dụng annotation @Secured - annotation của spring

  • jsr250Enabled: Cho phép phân quyền sử dụng @RoleAllow - annotation theo chuẩn JSR-250 standard của java
    Về cơ bản chức năng của 3 thằng là như nhau.

    3. GlobalMethodSecurityConfiguration

    Class chịu trách nhiệm cho việc base configuration cho security của cả ứng dụng, các bạn có thể extends class này để overide lại một vài config.

    @Configuration
    @EnableGlobalMethodSecurity(
        prePostEnabled = true,
        securedEnabled = true,
        jsr250Enabled = true)
    public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
    }
    

4. Role

Trên thực tế, có 2 cách để setup role cho một service.

  • Sử dụng đống annotation đã setup ở trên
  • Tạo một annotation phân quyền, và nhúng nhưng role cho phép vào annotation đấy.Ví dụ:

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @PreAuthorize("hasRole('ADMIN')")
    public @interface IsAdmin {
    
    }
    

5. Demo



6. Full Source

spring-security-role
http://bit.ly/2D9B2be

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

xoandaica

14 bài viết.
10 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
4 0
Bài viết này sẽ hướng dẫn các bạn từng bước xây dựng một ứng dụng java sử dụng spring boot kết hợp với spring data jdbc để lưu trữ và nhận dữ liệu ...
xoandaica viết hơn 1 năm trước
4 0
White
3 0
1. Các cách để xây dựng rest api trong spring Để xây dựng rest api trong spring có thể sử dụng nhiều cách. Phổ biến nhất là 3 cách dưới đây 1. S...
xoandaica viết hơn 1 năm trước
3 0
White
2 0
1. Single Thread 1. Làm một việc tại một thời điểm Không giống như đa số các ngôn ngữ lập trình khác, javascript đơn giản là đơn luồng. Điều này ...
xoandaica viết hơn 1 năm trước
2 0
Bài viết liên quan
White
0 0
Giới thiệu Trong bài hôm nay chúng ta sẽ tìm hiểu cách handle request POST của Spring Boot. Trước đó, bạn nên biết 1. 「Spring Boot 8」Tạo Web He...
https://loda.me viết hơn 1 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
14 bài viết.
10 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!