这期内容当中小编将会给大家带来有关springboot实现自定义权限标签(tld)在freemarker引用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>第一步:>强引入jar包
& lt; dependency> & lt; groupId> javax.servlet.jsp & lt; artifactId> jsp-api & lt; version> 2.2.1-b03 & lt;/dependency>
<强>第二步:>强自定义标签类
进口java.util.Map; 进口java.util.Set; 进口javax.servlet.http.HttpServletRequest; 进口org.jasig.cas.client.authentication.AttributePrincipal; 进口org.springframework.web.servlet.tags.RequestContextAwareTag; 进口com.goodidea.sso.dto.PrivilegesDto; 进口com.goodidea.sso.dto.ResourcesDto; 进口com.goodidea.sso.service.PrivilegesService;/* * * * @ClassName: PrivilegeTag * @Description:权限标签类 * @author汉莎天厨 * @date 2017年9月12日下午5:36:01 * */公开课PrivilegeTag延伸RequestContextAwareTag { 私有静态最终长serialVersionUID=534416848523276042 l; 私人字符串menuAlias; 私人字符串priAlias; 公共字符串getMenuAlias () { 返回menuAlias; } 公共空间setMenuAlias(字符串menuAlias) { 这一点。menuAlias=menuAlias; } 公共字符串getPriAlias () { 返回priAlias; } 公共空间setPriAlias(字符串priAlias) { 这一点。priAlias=priAlias; } @Override 保护int doStartTagInternal () {//TODO自动生成方法存根 布尔结果=false; 尝试{ HttpServletRequest请求=(HttpServletRequest) pageContext.getRequest (); AttributePrincipal校长=(AttributePrincipal) request.getUserPrincipal (); Object> Map<字符串;属性=principal.getAttributes (); 字符串的用户名=(字符串)attributes.get (“username"); .getWebApplicationContext PrivilegesService PrivilegesService=(PrivilegesService) this.getRequestContext () () .getBean (“privilegesServiceImpl"); Setdto=privilegesService.findResourcesByUsername(用户名); (ResourcesDto ResourcesDto: dto) { 如果(this.menuAlias.equals (resourcesDto.getAlias ())) { (PrivilegesDto pdto: resourcesDto.getPrivileges ()) { 如果(this.priAlias.equals (pdto.getAlias ())) { 结果=true; } } } } }捕捉(异常e) {//TODO自动生成的catch块 e.printStackTrace (); 结果=false; } 返回result& # 63;EVAL_BODY_INCLUDE: SKIP_BODY; } }
<强>第三步:>强创建tld标签,放入在- inf下
& lt;及# 63;xml version=?.0”;编码=癠TF-8", # 63;比; & lt; !DOCTYPE taglib公众“-//Sun Microsystems, inc .)//DTD JSP标记库1.1//EN"“http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"比; & lt; taglib> & lt; tlibversion> 1.0 & lt;/tlibversion> & lt; jspversion> 1.1 & lt;/jspversion> & lt; shortname> privilege & lt; tag> & lt; name> privilege & lt; tagclass> com.goodidea.sso.core.PrivilegeTag & lt; bodycontent> empty& lt; !——这里如果设为空,则无身体——比; & lt; attribute> & lt; name> menuAlias & lt; required> true & lt; rtexprvalue> true & lt;/attribute> & lt; attribute> & lt; name> priAlias & lt; required> true & lt; rtexprvalue> true & lt;/attribute> & lt;/tag> & lt;/taglib>
<强>第四:页面引用强>
& lt; #分配p=JspTaglibs (“/web - inf/tld/privilege.tld"]/祝辞
引用>注意tld,如果不在网络。xml上进行引入的话,就放在- inf下,要不然会报找不到tld资源异常
<强> Springboot项目freemarker引入shiro标签强>
Springboot集成shiro权限过程略过
<强>一、强>添加maven依赖
& lt; dependency> & lt; groupId> net.mingsoft & lt; artifactId> shiro-freemarker-tags & lt; version> 0.1 & lt;/version> & lt;/dependency><强>二,强>注入FreeMarkerConfigurer,未指定templateLoaderPath时遇到过跳转到页面404问题
@ bean 公共FreeMarkerConfigurer FreeMarkerConfigurer()抛出IOException TemplateException { FreeMarkerConfigurer FreeMarkerConfigurer=new FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath(“类路径:模板/?; freemarker.template。配置配置=freeMarkerConfigurer.createConfiguration (); configuration.setDefaultEncoding (“UTF-8");//这里可以添加其他共享变量比如sso登录地址 configuration.setSharedVariable (“shiro"新ShiroTags ()); freeMarkerConfigurer.setConfiguration(配置); 返回freeMarkerConfigurer; }springboot实现自定义权限标签(tld)在freemarker引用