按钮的权限控制
页面使用securityCheck标签
#if($securityCheck.hasPermission("user:configInfo:add"))
<a class="btn btn-success" onclick="jQuery.operate.add()" shiro:hasPermission="system:config:add">
<i class="fa fa-plus"></i> 新增
</a>
#end
页面使用securityCheck标签
#if($securityCheck.hasPermission("user:configInfo:add"))
<a class="btn btn-success" onclick="jQuery.operate.add()" shiro:hasPermission="system:config:add">
<i class="fa fa-plus"></i> 新增
</a>
#end
这边的配置文件,主要是指spring的配置文件.
website或者boot,是一定会给源码的,这2个工程是负责spring启动的.需要弄清楚spring到底加载了哪些东西.
无论是website工程还是boot工程,都会使用main/resources/applicationContext.xml加载spring,不同的地方在于,website工程会通过applicationContext加载datasource和transaction,boot不会,boot项目的datasource是通过application-druid.yml配置加载.
一般的后台系统关系一般比较复杂,需要集成的内容特别多.有些事情适合在开发阶段搞定,有些事情应该要在部署的时候搞定.
在后台应用的开发过程中,我们经常会遇到跨域问题,通常的解决方式是,使用各种后台和前端技术,来避免跨域问题.
而本质上来看,跨域问题是一个非常典型的部署问题,完全没必要使用开发的手段来解决.
下图是常见的部署示例,推荐使用contextPath来进行反向代理以后,进行转发.
提示
back-sample作为一个后台代码模板,业务相关只包含了登录授权这块,更包含和user-app集成的方式.
产品和项目最大的不同在于,项目是在特定环境上开发的,基本不用考虑迁移.而产品是在外部开发,要融入到目标的技术生态内.只要是产品,就需要考虑如何兼容和集成.
一套系统一定需要考虑安全的问题.
首先要确定的是,用谁的登录页面,这个决定了使用谁的SSO. 如果使用系统外的登录页面,我们称为集成外部SSO,如果使用我们自己的登录页面,我们成为内部的功能扩展
登录页面的渲染,是通过二次跳转实现的,主要是为了避免在iframe中的登录过期以后,能顺利的主屏幕跳转到主页面,而不是在iframe内部跳转.
com.istock.union.controller.PreLoginController.toLogincom.istock.union.controller.PreLoginController.preLogin,渲染登录页面,这个preLogin,可以在后台增加部分内容,比如登录页面上需要展示一些公告信息….com.istock.union.controller.PreLoginController.showLogin,中间有个判断,是否需要加载登录框,如果已经携带登录标识,可以直接跳过登录,如果没有登录标识,显示登录框LoginByPasswdController.login,检查数据库用户名密码,调用InnerTokenService,申请token,并且在页面进行保存,最后跳转到login.success.url,完成登录.这种场景主要是指,产品部署到客户方,客户方已经有自己的SSO系统了,客户希望将当前应用的登录功能,和自己的SSO完成集成,这样使用当前应用的人,就只要记一套用户名密码.
注意
集成外部SSO,登录token的存储模式请设置为Cookie模式,请勿使用page模式
#将登录标识(token)存储在什么地方,可选值,cookie:page,需要使用js,写入到当前页面
#如果需要同一个浏览器使用多个用户同时登录,需要使用page
sso.token.storeType=cookie