springboot2 + activiti7 整合

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

springboot2 + activiti7 整合

一、pom文件

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M6</version>
        </dependency>

二、yml文件配置

#activity配置信息
  activiti:
    history-level: full
    db-history-used: true
    #自动部署关闭
    check-process-definitions: false
    deployment-mode: never-fail #禁止SpringAutoDeployment

三、启动之前的准备

默认直接启动会报springsecurity找不到UserDetails实现类

1.新建 CustomUserDetail

代码如下:

import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;


@Data
public class CustomUserDetail implements UserDetails {

    //手机号
    private String username;

    private String password;

    //id 这是我的框架自定义信息,按实际情况解决
    private Long userId;
    private Long companyId;
    private Long deptId;
    private Long postId;
    private String tenant;



    private Collection<? extends GrantedAuthority> authorities;



    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return this.authorities;
    }

    @Override
    public String getPassword() {
        return this.password;
    }

    @Override
    public String getUsername() {
        return this.username;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}

2.新建 CustomUserDetailService

代码如下(示例):

import cn.hutool.core.util.ObjectUtil;
import com.uchiha.nova.core.tool.support.NovaUser;
import com.uchiha.nova.core.tool.util.AuthUtil;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;


@Component
public class CustomUserDetailService implements UserDetailsService {

    @Override
    public CustomUserDetail loadUserByUsername(String username) throws UsernameNotFoundException {
        // 框架方法不要深究,主要是为了返回 CustomUserDetail 
        NovaUser novaUser = AuthUtil.getUser();
        CustomUserDetail customUser = new CustomUserDetail();
        customUser.setUserId(novaUser.getUserId());
        customUser.setUsername(novaUser.getUserName());
        customUser.setTenant(novaUser.getTenantId());
        customUser.setPostId(1L);
        customUser.setCompanyId(ObjectUtil.isNotEmpty(novaUser.getCompanyId())?Long.valueOf(novaUser.getCompanyId()):1L);
        customUser.setDeptId(ObjectUtil.isNotEmpty(novaUser.getDeptId())?Long.valueOf(novaUser.getDeptId()):1L);
        customUser.setPostId(ObjectUtil.isNotEmpty(novaUser.getPostId())?Long.valueOf(novaUser.getPostId()):1L);
        customUser.setAuthorities(AuthorityUtils.commaSeparatedStringToAuthorityList(novaUser.getRoleName()));
        return customUser;
    }
}

SpringSecurity的常规用法


总结

activiti7默认集成了SpringSecurity,坏处是显而易见的,那就是在微服务情况下,我们的很多服务是不集成SpringSecurity,而且activiti所在的springboot也不会是和统一认证的springboot放在一起,违背了微服务划分的原则。这里我们在后续的地方讲解是如何利用框架的这段代码

NovaUser novaUser = AuthUtil.getUser();

解决的springsecurity权限问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值