springboot实现自定义权限标签(tld)在freemarker引用

  介绍

这期内容当中小编将会给大家带来有关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下

 springboot实现自定义权限标签(tld)在freemarker引用“> </p> <pre类= & 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引用