对Thymeleaf的一些看法

1.thymeleaf 的初衷是为了方便前端设计人员和后端人员的合作,基于它写的模版文件可以直接在浏览器打开,效果接近高保真原型。但thymeleaf 又提供了类似与JSP include的用法,使用模版片段的方式可以简化模版代码,但却违背了thymeleaf 的初衷(因为原生的Html并不支持模版片段,一个页面如果由多个模版片段构成,这个页面在浏览器打开时展现的效果可能就和最终效果不同,这时候你就要考虑哪些东西能放进模版片段,哪些不行)。所以前后端最佳的合作方式是UI组件化;对于一些无法组件化的UI效果,可以前端先做HTML页面,后台在其HTML标签上添加thymeleaf标签属性填充动态数据。

使用模版片段进行布局 :http://www.thymeleaf.org/doc/articles/layouts.html

2.thymeleaf3 和JSP的用法非常类似,可能是借鉴,也可能是为了争取JSP用户的目的。

thymeleaf3对HTML的语法要求不再严格,支持内联表达式(类似与el表达式的用法)可以读取内部对象(如request ,session,application

JSP页面可以直接使用EL表达式读取内部对象(如request ,session,application

th与JSP的对比:http://www.thymeleaf.org/doc/articles/thvsjsp.html

宠物店案例:http://www.thymeleaf.org/doc/articles/petclinic.html

3.thymeleaf3 与spring的关系,springboot使用thymeleaf作为默认的模版引擎;作为涉及权限的部分,thymeleaf提供了对spring security3,4的支持,如果是使用其他的权限框架(如:shiro)和thymeleaf整合,需要自己去实现相应的方言。 

springsecurity方言的使用: https://github.com/thymeleaf/thymeleaf-extras-springsecurity


----------------------

以下是一个demo案例整合了springboot 1.5.X+thymeleaf3 +springsecurity4;

源码地址:https://gitee.com/json20080301/spring-boot-spring-security-thymeleaf.git

访问方式:http://127.0.0.1:8081/security/

1.演示thymeleaf3 获取内部对象内容和springsecurity4登录人员信息和权限

2.演示不同用户访问不同的页面:1.可以匿名访问的 2.身份认证后可以访问的  3.不同用户权限才可以访问的,配置见springsecurityConfig

3.自定义FilterInvocationSecurityMetadataSource的接口实现类ProtectedUrlSecurityMetadataSource可以实现从Map<String,String>中加载URL和权限的对应关系,读者稍加封装即可实现从数据库中加载URL和权限的对应关系,配置见springsecurityConfig的buildProtectedUrlFilter()方法。

4.ProtectedUrlSecurityMetadataSource提供外部加载URL和权限的对应关系的方法loadSecurityMetadataSourceFromUrlMap(Map<String, String> urlMap) ,你可以先从数据库中读取URL和权限的配置,然后调用loadSecurityMetadataSourceFromUrlMap,URL拦截规则就相应的改变啦。

后续计划:提供自定义身份认证的案例,基于JWT来实现。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值