发布于2021-06-14 16:50 阅读(78) 评论(0) 点赞(17) 收藏(1)
前沿:
flowable和activiti是同一个团队开发的,activiti先,flowable后 。所以,flowable 算是 activiti的升级版。
flowable 确实要比activiti功能更完善。未来肯定flowable 是主流趋势,当下也已经是主流了。
目前最新版本的 flowable 6.6.0 版本,相对于6.5.0版本配置的免登录方案,对6.6.0版本就无效了
通过查看对比flowable源码,发现内置的 Security 权限代码有不少改动,这个是导致免登陆失败的根源
需要重新重构flowable源码的两个函数,如下
1. SecurityUtils
package org.flowable.ui.common.security;
import org.fh.util.Jurisdiction;
import org.flowable.common.engine.api.FlowableIllegalStateException;
import org.flowable.idm.api.User;
import org.flowable.ui.common.model.RemoteUser;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import java.util.ArrayList;
import java.util.List;
/**
* 说明:重构流程编辑器获取用户信息
* 作者:FH Admin
* from:www.fhadmin.org
*/
public class SecurityUtils {
private static User assumeUser;
private static SecurityScopeProvider securityScopeProvider = new FlowableSecurityScopeProvider();
private SecurityUtils() {
}
/**
* Get the login of the current user.
*/
public static String getCurrentUserId() {
User user = getCurrentUserObject();
if (user != null) {
return user.getId();
}
return null;
}
/**
* @return the {@link User} object associated with the current logged in user.
*/
public static User getCurrentUserObject() {
if (assumeUser != null) {
return assumeUser;
}
RemoteUser user = new RemoteUser();
user.setId(Jurisdiction.getUsername());
user.setDisplayName(Jurisdiction.getName());
user.setFirstName(Jurisdiction.getName());
user.setLastName(Jurisdiction.getName());
user.setEmail("admin@flowable.com");
user.setPassword("123456");
List<String> pris = new ArrayList<>();
pris.add(DefaultPrivileges.ACCESS_MODELER);
pris.add(DefaultPrivileges.ACCESS_IDM);
pris.add(DefaultPrivileges.ACCESS_ADMIN);
pris.add(DefaultPrivileges.ACCESS_TASK);
pris.add(DefaultPrivileges.ACCESS_REST_API);
user.setPrivileges(pris);
return user;
}
public static void setSecurityScopeProvider(SecurityScopeProvider securityScopeProvider) {
SecurityUtils.securityScopeProvider = securityScopeProvider;
}
public static SecurityScope getCurrentSecurityScope() {
SecurityContext securityContext = SecurityContextHolder.getContext();
if (securityContext != null && securityContext.getAuthentication() != null) {
return getSecurityScope(securityContext.getAuthentication());
}
return null;
}
public static SecurityScope getSecurityScope(Authentication authentication) {
return securityScopeProvider.getSecurityScope(authentication);
}
public static SecurityScope getAuthenticatedSecurityScope() {
SecurityScope currentSecurityScope = getCurrentSecurityScope();
if (currentSecurityScope != null) {
return currentSecurityScope;
}
throw new FlowableIllegalStateException("User is not authenticated");
}
public static void assumeUser(User user) {
assumeUser = user;
}
public static void clearAssumeUser() {
assumeUser = null;
}
}
2.FlowableUiSecurityAutoConfiguration
package org.flowable.ui.common.security;
import org.flowable.spring.boot.FlowableSecurityAutoConfiguration;
import org.flowable.spring.boot.idm.IdmEngineServicesAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration;
import org.springframework.context.annotation.Configuration;
/**
* 说明:重构FlowableUiSecurity自动配置
* 作者:FH Admin
* from:www.fhadmin.org
*/
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter({
IdmEngineServicesAutoConfiguration.class,
})
@AutoConfigureBefore({
FlowableSecurityAutoConfiguration.class,
OAuth2ClientAutoConfiguration.class,
})
public class FlowableUiSecurityAutoConfiguration {}
原文链接:https://www.cnblogs.com/sjingser1/p/14877939.html
作者:我很伤感
链接:http://www.javaheidong.com/blog/article/222794/d1304290f58fe8ce020a/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!