Rumah  >  Artikel  >  Java  >  Bagaimana untuk menangani kawalan kebenaran dalam pembangunan fungsi back-end Java?

Bagaimana untuk menangani kawalan kebenaran dalam pembangunan fungsi back-end Java?

王林
王林asal
2023-08-10 17:45:111682semak imbas

Bagaimana untuk menangani kawalan kebenaran dalam pembangunan fungsi back-end Java?

Bagaimana untuk menangani kawalan kebenaran dalam pembangunan fungsi backend Java?

Dalam pembangunan fungsi back-end Java, kawalan kebenaran merupakan isu penting. Kawalan kebenaran yang betul boleh melindungi keselamatan sistem dan menghalang pengguna yang tidak dibenarkan daripada mengakses data atau fungsi sensitif. Artikel ini akan memperkenalkan beberapa kaedah kawalan kebenaran biasa dan memberikan contoh kod.

1. Kawalan kebenaran berasaskan peranan (RBAC)

Kawalan kebenaran berasaskan peranan ialah kaedah kawalan kebenaran yang biasa dan praktikal. Ia mengaitkan pengguna dengan peranan, dan peranan dikaitkan dengan kebenaran, dan mengawal kebenaran pengguna dengan memberikan peranan yang berbeza kepada pengguna.

Pertama, kita perlu membuat kelas entiti untuk pengguna, peranan dan kebenaran. Contoh kod adalah seperti berikut:

// 用户实体类
public class User {
    private String id;
    private String username;
    // 省略其他字段和方法
}

// 角色实体类
public class Role {
    private String id;
    private String name;
    // 省略其他字段和方法
}

// 权限实体类
public class Permission {
    private String id;
    private String name;
    private String url;
    // 省略其他字段和方法
}

Kemudian, kita perlu mencipta jadual pengguna, peranan dan kebenaran dalam pangkalan data, dan mewujudkan hubungan yang sepadan.

Seterusnya, kita perlu menulis kelas perkhidmatan yang sepadan untuk mengendalikan logik kawalan kebenaran. Contoh kod adalah seperti berikut:

public class UserService {
    public boolean hasPermission(User user, String url) {
        // 根据用户获取角色列表
        List<Role> roles = user.getRoles();
        // 遍历角色列表,检查是否拥有访问url的权限
        for (Role role : roles) {
            List<Permission> permissions = role.getPermissions();
            for (Permission permission : permissions) {
                if (url.equals(permission.getUrl())) {
                    return true;
                }
            }
        }
        return false;
    }
}

Dalam pembangunan fungsi tertentu, kami boleh memanggil kaedah hasPermission UserService untuk menyemak kebenaran di mana pengesahan kebenaran diperlukan. Contohnya:

public class UserController {
    private UserService userService;

    public void getUser(String userId) {
        // 获取当前用户
        User user = getCurrentUser();
        // 检查用户是否拥有访问用户信息的权限
        boolean hasPermission = userService.hasPermission(user, "/user/" + userId);
        if (hasPermission) {
            // 查询用户信息
            User targetUser = userService.getUser(userId);
            // 返回结果
        } else {
            // 返回无权限的错误提示
        }
    }
}

Kaedah kawalan kebenaran berasaskan peranan adalah mudah dan praktikal, serta sesuai untuk sistem dengan kebenaran yang agak mudah dan tetap.

2. Kawalan kebenaran berasaskan sumber (ABAC)

Kawalan kebenaran berasaskan sumber ialah kaedah kawalan kebenaran yang lebih fleksibel. Ia memanjangkan butiran kawalan kebenaran ke peringkat sumber dan menentukan sama ada pengguna mempunyai kebenaran untuk mengakses sumber tertentu dengan mentakrifkan satu siri peraturan akses.

Berbanding dengan RBAC, ABAC mempunyai kelebihan dalam fleksibiliti kawalan kebenaran. Kami boleh mengawal kebenaran dengan menentukan pelbagai syarat dan peraturan, seperti masa, lokasi, peranan dan faktor lain. Sebagai contoh, kita boleh menentukan peraturan: hanya pentadbir semasa waktu bekerja boleh mengakses antara muka API maklumat pekerja.

public class UserController {
    public void getEmployeeInfo(String empId) {
        // 获取当前用户
        User user = getCurrentUser();
        // 判断是否在工作时间内
        boolean isWorkingTime = isWorkingTime();
        // 判断用户是否为管理员
        boolean isAdmin = isAdmin(user);
        // 根据条件判断是否有权限访问员工信息
        if (isWorkingTime && isAdmin) {
            // 查询员工信息
            EmployeeInfo employeeInfo = employeeService.getEmployeeInfo(empId);
            // 返回结果
        } else {
            // 返回无权限的错误提示
        }
    }
}

Kawalan kebenaran berasaskan sumber memerlukan penentuan dan pengurusan sejumlah besar peraturan dan syarat, dan sesuai untuk sistem dengan kebenaran yang lebih kompleks dan fleksibel.

Ringkasan:

Dalam pembangunan fungsi back-end Java, kawalan kebenaran adalah bahagian yang sangat diperlukan. Kawalan kebenaran berasaskan peranan dan kawalan kebenaran berasaskan sumber ialah dua kaedah kawalan kebenaran biasa. Memilih kaedah kawalan kebenaran yang sesuai perlu ditentukan berdasarkan keperluan khusus dan kerumitan sistem. Tidak kira kaedah yang anda pilih, kawalan kebenaran yang baik boleh melindungi keselamatan sistem dengan berkesan dan menghalang capaian yang tidak dibenarkan. Saya harap artikel ini telah memberi anda sedikit bantuan dalam kawalan kebenaran backend Java.

Atas ialah kandungan terperinci Bagaimana untuk menangani kawalan kebenaran dalam pembangunan fungsi back-end Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn