跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • SpringSecurity 前台和后台用户不同表问题
未分類
17 1 月 2021

SpringSecurity 前台和后台用户不同表问题

SpringSecurity 前台和后台用户不同表问题

資深大佬 : totoro52 6

最近在写一个微信小程序小项目,安全框架采用了 security,但系统需要区分前台用户和后台用户

起初我的想法是写两个 provider,两个 userDetailsService 分别处理前台用户和后台用户 并采用 jwt 方式校验

实现的基本的登录流程后,我发现后面越来越难写下去,因为后台用户和前台用户是两个表的,权限也完全不同,很难融合到一起 有没有大牛好点的解决方案,或者拆开成两个项目?

大佬有話說 (10)

  • 資深大佬 : echo1937

    啥叫做区分前台和后台用户?

  • 主 資深大佬 : totoro52

    @echo1937 我前台用户也需要做权限控制,后台也需要,但是两者都是不同的表,权限也不一样

  • 資深大佬 : soulzz

    那就再建一张表,标记用户是前台还是后台后户

  • 資深大佬 : notejava

    这里应该是两个项目,两套权限管理。

  • 資深大佬 : echo1937

    @totoro52 #2 用户是用户( User ),权限是权限( Role ),

    前端需要权限控制,那么就会多一张权限表,为啥是搞 2 套用户,

    我还是不明白。

  • 資深大佬 : ourslay

    贴下之前回复的。
    自定义 Filter 继承 UsernamePasswordAuthenticationFilter,分别实现对 user/admin 的 AuthenticationManager

    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);
    “`

  • 資深大佬 : coder1v5

    jwt 中将用户关键信息 userid, userType 加入进去,写一个 jwtProvider,在 jwtProvider 中解析出来 token,token 本身抽象出来也是认证信息(用户名和密码),这个 Provider 当做登录认证 Provider 去写。Filter 做配置转发给 Provider 。然后根据 token 中解析出来的 userId,userType, 调用不同的 service 去获取对应的权限.然后放入 SecurityContext 中就可以了
    if(Strings.equals(userType,后台用户){
    //调用后台用户的服务类,添加用户信息,权限信息,放入 security 上下文中
    SecurityContextHolder.getContext().setAuthentication(authToken);

    }else{
    //调用前台用户的服务类,添加用户信息,权限信息,放入 security 上下文中
    SecurityContextHolder.getContext().setAuthentication(authToken);
    }

    spring security 对于这种场景提供了足够的支持,别说两种用户类型了,多少种登录用户,及多种认证方式都可以轻松扩展。

  • 資深大佬 : vjnjc

    估计是管理后台用户和软件最终用户两套吧

    其实 security 授权认证可以用 jwt token 解析出来 uid+userType,认证完了以后扔一个用户 object 在 context 里面,没有限定一定要同一个用户类型

  • 資深大佬 : nvkou

    不应该理解为不同权限吗?分表有什么意义?
    后台入口不鉴权的吗

  • 資深大佬 : qinxi

    系统分离就完了…各是各的用户系统. 更新功能互不影响

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具