SpringSecurity 前台和后台用户不同表问题
最近在写一个微信小程序小项目,安全框架采用了 security,但系统需要区分前台用户和后台用户
起初我的想法是写两个 provider,两个 userDetailsService 分别处理前台用户和后台用户 并采用 jwt 方式校验
实现的基本的登录流程后,我发现后面越来越难写下去,因为后台用户和前台用户是两个表的,权限也完全不同,很难融合到一起 有没有大牛好点的解决方案,或者拆开成两个项目?
最近在写一个微信小程序小项目,安全框架采用了 security,但系统需要区分前台用户和后台用户
起初我的想法是写两个 provider,两个 userDetailsService 分别处理前台用户和后台用户 并采用 jwt 方式校验
实现的基本的登录流程后,我发现后面越来越难写下去,因为后台用户和前台用户是两个表的,权限也完全不同,很难融合到一起 有没有大牛好点的解决方案,或者拆开成两个项目?
前端需要权限控制,那么就会多一张权限表,为啥是搞 2 套用户,
我还是不明白。
configure 配置
“`
.addFilter(new MultipleAuthenticationFilter(adminAuthenticationManager(), “/admin/login”))
.addFilter(new MultipleAuthenticationFilter(userAuthenticationManager(), “/user/login”));
“`
AuthenticationManager 配置
“`
List<AuthenticationProvider> providers = new ArrayList<>();
DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
daoAuthenticationProvider.setUserDetailsService(adminDetailsService()); // or userDetailsService
providers.add(daoAuthenticationProvider);
return new ProviderManager(providers);
“`
}else{
//调用前台用户的服务类,添加用户信息,权限信息,放入 security 上下文中
SecurityContextHolder.getContext().setAuthentication(authToken);
}
spring security 对于这种场景提供了足够的支持,别说两种用户类型了,多少种登录用户,及多种认证方式都可以轻松扩展。
其实 security 授权认证可以用 jwt token 解析出来 uid+userType,认证完了以后扔一个用户 object 在 context 里面,没有限定一定要同一个用户类型