RoleHierarchyService.getRoleHierarchyExpr()返回值对吗?

来源:7-6 使用 AOP 动态刷新角色层级

慕UI8284076

2024-04-10

RoleHierarchyService文件内容:

package com.doc.SpringSecurity.security.rolehierarchy;

import com.doc.SpringSecurity.model.dao.RoleMapper;
import com.doc.SpringSecurity.model.pojo.Role;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@Service
public class RoleHierarchyService {
    private final RoleMapper roleMapper;

    public String getRoleHierarchyExpr() {
        List<Role> roleList = roleMapper.findAll();
        return roleList.stream()
                .flatMap(role -> role.getAuths()
                        .stream()
                        .map(auth -> role.getRoleName() + " > " + auth.getAuthority() + "\n")
                )
                .collect(Collectors.joining("",  "ROLE_ADMIN > ROLE_STAFF", "\n"));
    }
}

调用该Service

    @GetMapping("/getRoleHierarchy")
    public String RoleHierarchy() {
        return roleHierarchyService.getRoleHierarchyExpr();
    }

结果:
ROLE_ADMIN > ROLE_STAFFROLE_USER > USER_READ
ROLE_ADMIN > USER_UPDATE
ROLE_ADMIN > USER_READ
ROLE_ADMIN > USER_CREATE
ROLE_ADMIN > USER_ADMIN

这个结果对吗?第一行里 ROLE_STAFFROLE_USER 没有任何分隔符?是不是中间有什么东西?
请帮忙详细回答下,中间应该是什么分隔符,代码应该怎么改正?
千万别模糊回答,前几次问,几乎没回答。

写回答

1回答

接灰的电子产品

2024-04-10

ROLE_ADMIN > ROLE_STAFF 后面是 \n 啊,如果你的结果不对,有可能是 windows 的换行需要使用 `\r\n` 来表示,这个把上面的代码中的 `\n` 替换一下就行。但是这个仅仅是显示的时候会有问题,实际使用并不会有问题

0
0

Spring Security+OAuth2 精讲,打造企业级认证与授权

一站式掌握主流安全框架与行业解决方案,从容应对各种安全难题。

1042 学习 · 316 问题

查看课程