小编0x1*_*C1B的帖子

QFileDialog:GtkDialog 在没有临时父级的情况下映射

我有一个用 C++ 编写的 Qt 程序的源代码片段,在 Linux 下运行,它创建一个 QFileDialog 来打开现有文件。如果我执行此操作,一切似乎都正常,但是当创建对话框时,我收到一条警告说“Gtk-Message: GtkDialog 没有临时父项映射”

在另一个线程中,我发现调用这个函数“gtk_window_set_transient_for()”可以修复这个错误。但是这个函数是 GTK 库的一部分,但我使用的是 Qt 框架。那么是否有任何解决方案可以修复此错误?

此对话框的父级是 QMainWindow:

QString filename = QFileDialog::getOpenFileName(this, "Open File");
Run Code Online (Sandbox Code Playgroud)

c++ qt

8
推荐指数
1
解决办法
8027
查看次数

Spring OAuth2资源服务器从数据库加载同步用户

初始情况的简要描述:让我们假设一个基于 Spring Boot 的 RESTful API 充当 OAuth2 资源服务器。资源服务器使用 Spring Security 5 和常见方法进行配置。外部授权服务器按照 JWT 声明传递用户信息(例如电子邮件、名字、姓氏),并在客户端进行身份验证时接收到。授权服务器保存的通用用户信息通过资源服务器特定用户信息(例如业务角色、域UID)进行扩展。域用户由来自两个数据源的信息组成:

  • 授权服务器用户数据
  • 资源服务器(应用程序)用户数据

从未通过 JWT 在资源服务器上进行身份验证的新用户将在资源服务器的数据库中创建。资源服务器的数据库相应地包含每个使用资源服务器的API的用户的用户实体,由授权服务器同步的信息和资源服务器的业务逻辑补充的信息组成。

public class User {

    // Information synchronized from Authorization Server
    private String subject;
    private String preferredUsername;
    private String firstName;
    private String lastName;
    private String email;

    // Information added by Resource Server's business logic
    private UUID id;
    private String businessRole;
}
Run Code Online (Sandbox Code Playgroud)

域用户的同步是通过侦听 AuthenticationSuccessEvent 并在数据库中创建用户或根据需要更新用户来执行的。总而言之,对于由主题声明标识的每个 OAuth2 用户,数据库中有一个包含特定于域的附加信息的域配置文件。

本文清晰地描述了这种用户数据的同步和分发。

现在讨论实际问题:虽然 OAuth2 范围控制应用程序拥有哪些权限,但还必须控制用户拥有哪些权限。用户授权是特定于域的,并记录在资源服务器的数据库中。例如,用户应该只能删除他创建的评论。此类访问控制无法通过 OAuth2 范围进行控制。顺便说一句,我正在讨论使用or的 Spring 方法安全性@PreAuthorize …

java spring-mvc oauth-2.0 spring-boot

7
推荐指数
1
解决办法
1863
查看次数

Spring Security - 基于所有权的访问

假设我有一个最小的 RESTful 控制器,如下所示,顺便使用 Java 8 和 Spring Boot 2,......

@RestController
class MyController {

    @Autowired
    private PostService service;    

    @GetMapping
    public Post get() {

        return service.getLatest();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经使用 Spring Security 模块成功保护了这条路线。现在我只想允许资源所有者访问此资源。对于资源所有者,我的意思是创建者或简单地说:

Post myPost = new Post();
...
myPost.getCreator().equals(currentUser); // Should be true when access is granted
Run Code Online (Sandbox Code Playgroud)

我发现了很多关于基于角色的访问,但几乎没有检查所有权......当然我可以在控制器中放置一个 if 语句并抛出异常,但我打算使用类似 Spring 的Expression-Based Access Control之类的东西。

还有其他想法吗?有人有关于资源所有权检查的好主意或示例吗?

java security spring spring-security spring-boot

6
推荐指数
1
解决办法
2212
查看次数

Intel x86 - 中断服务例程责任

我没有真正意义上的问题,但我会尽力澄清内容问题。假设我们有一个微内核(PC Intel x86;32 位保护模式),具有针对每个 CPU 异常工作的中断描述符表 (IDT)中断服务例程 (ISR)。ISR 被成功调用,比如在出现Division by Zero异常的情况下。

global ir0
extern isr_handler

isr0:

    cli
    push 0x00   ; Dummy error code
    push %1     ; Interrupt number

    jmp isr_exc_handler

isr_exc_handler:

; Save the current processor state

    pusha

    mov ax, ds
    push eax

    mov ax, 0x10 ; Load kernel data segment descriptor
    mov ds, ax
    mov es, ax
    mov fs, ax
    mov gs, ax

    ; Push current stack pointer

    mov eax, esp
    push eax …
Run Code Online (Sandbox Code Playgroud)

x86 assembly intel interrupt osdev

4
推荐指数
1
解决办法
1183
查看次数

使用自定义基础存储库配置 Spring @DataJpaTest

让我们假设一个自定义的基本JpaRepository实现如下所示。

public class SimpleCustomJpaRepository<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements CustomJpaRepository<T, ID> {

    @Override
    public List<T> findAllCustom() {

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

基础存储库是使用@EnableJpaRepositories注释注册的。

@EnableJpaRepositories(value = "org.somebody.repository", repositoryBaseClass = SimpleCustomJpaRepository.class)
Run Code Online (Sandbox Code Playgroud)

UserRepository我应该如何为扩展接口配置集成测试CustomJpaRepository,并因此应该使用自定义基本实现?

public interface UserRepository extends CustomJpaRepository<User, Long> { ... }
Run Code Online (Sandbox Code Playgroud)

当前使用的集成测试失败并显示org.springframework.data.mapping.PropertyReferenceException: No property findAllCustom found for type User!。实际上,它无法加载,ApplicationContext因为我的自定义基础存储库实现在集成测试期间未注册,因此未findAllCustom找到 的实现。

@ExtendWith(SpringExtension.class)
@DataJpaTest
class UserRepositoryTest {

    @Autowired
    private UserRepository userRepository. 
}
Run Code Online (Sandbox Code Playgroud)

JpaRepository我应该如何结合 JPA 存储库集成测试来注册自定义实现?

java spring spring-data-jpa spring-boot spring-boot-test

3
推荐指数
1
解决办法
1597
查看次数