1. 概述
Activiti 是一個開源的 BPM(業務流程管理)系統。 欲瞭解更多信息,請查看我們關於 Activiti 與 Java 的指南。
Activiti 8 不再提供身份管理支持。 我們將使用 Spring 框架進行身份管理。 在下面,我們將探討如何使用 Spring Security 進行身份管理。
2. Maven 依賴項
要將 Activiti 設置到 Spring Boot 項目中,請查看我們的上一篇文章。除了 activiti-spring-boot-starter,我們還需要 spring-boot-starter-security 依賴項:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3.身份管理使用 Spring Security
為了使用 Spring Security 提供的用户管理,我們可以提供如下的 Spring Security 配置類:
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth
.requestMatchers("/protected-process*")
.authenticated()
.anyRequest()
.permitAll())
.formLogin(login -> login
.loginPage("/login")
.defaultSuccessUrl("/homepage")
.failureUrl("/login?error=true")
.permitAll())
.csrf(AbstractHttpConfigurer::disable)
.logout(logout -> logout.logoutSuccessUrl("/login"));
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
User.UserBuilder users = User.withDefaultPasswordEncoder();
UserDetails user = users.username("user")
.password("{noop}pass")
.authorities("ROLE_ACTIVITI_USER")
.build();
return new InMemoryUserDetailsManager(user);
}
}
Activiti 8 依賴 Spring Security 來處理 Security、Roles 和 Groups。 UserDetailsService 用於配置用户及其各自的 Groups 和 Roles。 ACTIVITI_USER 角色需要與 Activiti 的 TaskRuntime API 交互。