①从单一架构到分布式架构的过渡阶段,适合学完Ssm框架后,需要通过项目巩固所学知识技能,并平滑过渡到分布式开发的小伙伴
②前端会员系统是基于SpringBoot+SpringCloud的微服务架构,使用了SpringCloud的Eureka、Ribbon、Feign、Zuul等基本组件搭建了基础开发环境
③后台管理系统是基于Ssm整合的单一架构,使用SpringSecurity进行权限控制、使用zTree实现树形结构数据在页面的显示,并通过MyBatis的PageHelper插件实现分页
帮助创业者发布创业项目,向大众募集启动资金的融资平台
系统前台(前台会员系统) | 系统后台(后台管理员系统) |
---|---|
众筹项目展示(列表) | 角色数据维护 |
众筹项目细节展示(详细) | 菜单数据维护 |
支持项目(付款) | 权限控制 |
个人中心-我的众筹-发起众筹 | 业务审核 |
后台管理系统用到的技术:
前台会员系统用到的技术:
第三方接口:
AffirmativeBased 继承了 AbstractAccessDecisionManager ,所以 AffirmativeBased 是SpringSecurity框架中默认的访问决策管理器
AffirmativeBased 里面有3个 AccessDecisionVoter (访问决策投票者),按照顺序分别为 PreInvocationAuthorizationAdviceVoter(使用 @PreFilter 和 @PreAuthorize 注解处理权限的投票者)、RoleVoter(角色投票者)、AuthenticatedVoter(认证投票者)
AffirmativeBased 按照顺序依次对各个投票者的返回值进行判断
1)如果遇到的投票者的返回值是1,直接允许访问,不再对其他投票者的返回值进行判断了;
2)如果遇到的投票者的返回值是-1,继续对其他投票者的返回值进行判断了。如果一直没有遇到返回值是1的投票者,则不允许访问,抛出访问被拒绝的异常;如果中途遇到了返回值是1的投票者,则直接允许访问,不再对其他投票者的返回值进行判断了;
3)如果遇到的投票者的返回值不是1也不是-1,则继续对其他投票者的返回值进行判断了,如果一直没有遇到返回值是1或-1的投票者,代表所有投票者都弃权了,这个时候是否允许访问,要看该访问决策管理器里的allowIfAllAbstainDecisions属性是什么值,默认的值是false,表示不允许访问。这个属性值也可以由用户自己设置。
WebExpressionVoter(表达式投票者)
为了SpringSecurity整合SpringSession,加入了SpringSession的xml配置文件,也在web.xml中加入了它的监听器,可是在SpringSecurity的配置类中却怎么也引用不到SessionRegistry,最后在百度得知,必须先初始化SpringSession,后初始化SpringSecurity。最终的解决办法是注释掉web.xml中的SpringSession的监听器,然后加一个初始化类,只需继承AbstractHttpSessionApplicationInitializer这个类即可,这样就会保证SpringSession先初始化。
使用SpringSession的xml配置文件,在里面配置JdbcHttpSessionConfiguration,及使用JDBC的方式管理Session,然后在源码中找到Mysql数据库的建表语句,创建出需要的表即可。
使用SpringSession还需要注意它的序列化和反序列化,存入数据库表中的时候,它会使用对象的序列化,所以存入的对象实体类需要实现序列化接口,从数据库表中获取Session属性值的时候需要用到对象的反序列化。所以,更新和获取Session数据时,只需模仿它的源码中的序列化和反序列化方法即可。我的是在SessionServiceImpl中加入的序列化和反序列化方法,也是在它的源码中复制过来的。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。