Cause: org.springframework.security.core.userdetails.UsernameNotFoundException

我的springboot 版本 2.3.7.RELEASE
activiti版本7.1.0.M6

调用根据用户查询任务时报错

 List<Task> list = taskService.createTaskQuery().taskCandidateUser("test1").list();
2021-07-02 08:57:27.987 ERROR 26896 --- [nio-8080-exec-1] o.a.e.impl.interceptor.CommandContext    : Error while closing command context
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database.  Cause: org.springframework.security.core.userdetails.UsernameNotFoundException: test1
### Cause: org.springframework.security.core.userdetails.UsernameNotFoundException: test1at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.5.6.jar:3.5.6]at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) ~[mybatis-3.5.6.jar:3.5.6]at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis-3.5.6.jar:3.5.6]at org.activiti.engine.impl.db.DbSqlSession.selectListWithRawParameter(DbSqlSession.java:404) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:374) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:365) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.persistence.entity.data.impl.MybatisTaskDataManager.findTasksByQueryCriteria(MybatisTaskDataManager.java:66) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.persistence.entity.TaskEntityManagerImpl.findTasksByQueryCriteria(TaskEntityManagerImpl.java:260) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.TaskQueryImpl.executeList(TaskQueryImpl.java:1357) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.AbstractQuery.execute(AbstractQuery.java:163) [activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:37) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:78) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:57) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:42) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:48) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:59) ~[activiti-engine-7.1.0.M6.jar:na]at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47) [activiti-spring-7.1.0.M6.jar:na]at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) [spring-tx-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) [activiti-spring-7.1.0.M6.jar:na]at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:29) [activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:44) [activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:39) [activiti-engine-7.1.0.M6.jar:na]at org.activiti.engine.impl.AbstractQuery.list(AbstractQuery.java:137) [activiti-engine-7.1.0.M6.jar:na]at com.example.contract.modules.controller.ProcessController.getGropTask(ProcessController.java:101) [classes/:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_291]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_291]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_291]at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) [spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) [spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) [tomcat-embed-core-9.0.41.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.2.12.RELEASE.jar:5.2.12.RELEASE]at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) [tomcat-embed-core-9.0.41.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-9.0.41.jar:9.0.41]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-embed-websocket-9.0.41.jar:9.0.41]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.41.jar:9.0.41]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.12.RELEASE.jar:5.2.12.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.3.6.RELEASE.jar:5.3.6.RELEASE]

我的Maven依赖

<!--activiti7--><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.1.0.M6</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-model</artifactId><version>7.1.0.M6</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-bpmn-converter</artifactId><version>7.1.0.M6</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-json-converter</artifactId><version>6.0.0</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-image-generator</artifactId><version>7.1.0.M6</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-engine</artifactId><version>7.1.0.M6</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-image-generator</artifactId><version>7.1.0.M6</version></dependency>

如何解决
一种是在@SpringBootApplication 注解中排除SpringSecurity,但是这个方法在activiti6中好像可以,但那是7中不起作用
所以只能配置Security,需要重写UserDetailsService.loadUserByUsername()方法,在里面自己组装一个user 就可以了
代码如下:

以下我的是通过代码生成器直接生成的service,impl,dao以及xml

UserService

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.contract.modules.entity.UserEntity;
import org.springframework.security.core.userdetails.UserDetailsService;
//service继承UserDetailsService
public interface UserService extends IService<UserEntity>, UserDetailsService {}

UserServiceImpl
重点在这里,上面service继承了UserDetailsService 在这里重写loadUserByUsername(),去自己的数据库里查用户

import com.example.contract.modules.dao.UserDao;
import com.example.contract.modules.entity.UserEntity;
import com.example.contract.modules.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {UserEntity userEntity = userDao.selectOne(new QueryWrapper<UserEntity>().eq("user_name", username));if (userEntity!=null){//创建角色集合对象Collection<GrantedAuthority> authorities = new ArrayList<>();/* GrantedAuthority grantedAuthority = new SimpleGrantedAuthority("ROLE_ACTIVITI_USER");authorities.add(grantedAuthority);*/User user = new User(userEntity.getUserName(), "password", authorities);return user;}return null;}
}

UserDao

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.contract.modules.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserDao extends BaseMapper<UserEntity> {}

附上我的SpringSecurityConfig配置

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {//表示放行全部接口http.csrf().disable().authorizeRequests().antMatchers("/**").permitAll();}
}

Springboot2.x集成activiti7.1.0.M6 报错: UsernameNotFoundException 的处理相关推荐

  1. Activiti7.1.0.M6

    activiti7.1.0.M6(一) 题记 最近在领导的带领学习下开发一个OA项目,项目中使用了activiti7 开发流程,自己边学习边开发了部分业务,期间遇到了很多问题,小编也参考了大量的博客文 ...

  2. python 3.8.0 编译报错 Could not import runpy module 解决方案

    环境 CentOS 7 Gcc 4.8.5 Python 3.8.0 相关报错 make build_all CFLAGS_NODIST=" -fprofile-use -fprofile- ...

  3. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法

    内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...

  4. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法...

    内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...

  5. RedHat5.5_X64 Linux安装oracle 11.2.0.3 报错

    [javascript] view plaincopy REDHAT linux 安装 11G  11.2.0.3   报错 oracle用户执行./runinstaller后 直接报错 查看日志后 ...

  6. 01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题

    01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题 参考文章: (1)01-路由跳转 安装less this.$router.re ...

  7. 一种解决Android studio 3.0 Build报错的方法

    一种解决Android studio 3.0 Build报错的方法 参考文章: (1)一种解决Android studio 3.0 Build报错的方法 (2)https://www.cnblogs. ...

  8. 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法

    未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法 参考文章: (1)未能加载文件或程序集 Newtonsoft.Json, Version=4. ...

  9. Unexpected token u in JSON at position 0 控制台报错

    在写代码的时候遇到过几次这种问题,就想着可以更新一下blog.(太久没写了 Unexpected token u in JSON at position 0 控制台报错 出现原因: 这个报错通常是因为 ...

最新文章

  1. Gold Code,Gold Sequence
  2. FUSE——用户空间文件系统
  3. android 使用jar里 aidl,Android Studio中用gradle打包带AIDL文件的jar文件
  4. easyui的datagrid的使用记录
  5. 大二上学期软件工程概论学习进度表(第十二周)
  6. hive 时间转字符串_大数据面试杀招——Hive高频考点,还不会的进来挨打
  7. propertyeditor java_PropertyEditor使用
  8. log4j教程_Log4j教程
  9. Lua中handler方法的使用(亲测版)
  10. 如何在Windows Server 2003下安装NetBEUI
  11. OpenWrt 固件定制
  12. Java面向对象编程
  13. php连接mysql 实现登录_php如何连接mysql实现简单注册登陆页面
  14. 九爷带你了解 mctop: 监视 Memcache 流量
  15. Java基础-进程与线程
  16. 四川大学计算机考研专业参考书目,四川大学计算机技术(专业学位)研究生考试科目和考研参考书目...
  17. 基于主流Arm服务器的低成本云游戏、云手机产品方案【Rockchip、MediaTek等】
  18. 小米miui查看连接过已保存的密码方法
  19. c++RPG游戏《末日风暴》1.0.8
  20. 亚马逊广告接口 amazon advert api 申请流程

热门文章

  1. 奥运过后只有五种人才可以买房
  2. JSP+ssm计算机毕业设计奥迪汽车配件网络销售系统8avr0【源码、数据库、LW、部署】
  3. three.js glb 多个_奔驰车友会|从7座奔驰的角度来看,29.28万起的奔驰GLB,性价比很高...
  4. ajax socketio,socketio请求头问题
  5. 认知智能真的来了?且看道翰天琼认知智能三大技术体系-1!
  6. 2022.1.18(一测补题,树的遍历题目,并查集)
  7. 冰箱专属的空气净化器,让食材更新鲜
  8. 开源网格划分程序资源链接
  9. layui 数据表格+分页
  10. [附源码]计算机毕业设计JAVA医学季节性疾病筛查系统