最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作

 更新時(shí)間:2020年09月18日 13:12:16   作者:Kirk_  
這篇文章主要介紹了springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

第一步:引入jar包

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2.1-b03</version>
    </dependency> 

第二步:自定義標(biāo)簽類

import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;

import org.jasig.cas.client.authentication.AttributePrincipal;
import org.springframework.web.servlet.tags.RequestContextAwareTag;

import com.goodidea.sso.dto.PrivilegesDto;
import com.goodidea.sso.dto.ResourcesDto;
import com.goodidea.sso.service.PrivilegesService;

/**
 * 
* @ClassName: PrivilegeTag 
* @Description: 權(quán)限標(biāo)簽類 
* @author lsg
* @date 2017年9月12日 下午5:36:01 
*
 */
public class PrivilegeTag extends RequestContextAwareTag{


  private static final long serialVersionUID = 534416848523276042L;

  private String menuAlias;

  private String priAlias;

  public String getMenuAlias() {
    return menuAlias;
  }

  public void setMenuAlias(String menuAlias) {
    this.menuAlias = menuAlias;
  }


  public String getPriAlias() {
    return priAlias;
  }

  public void setPriAlias(String priAlias) {
    this.priAlias = priAlias;
  }

  @Override
  protected int doStartTagInternal() {
    // TODO Auto-generated method stub
    boolean result = false;
     try {
      HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
       AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();
       Map<String, Object> attributes = principal.getAttributes();
      String username=(String) attributes.get("username");
      PrivilegesService privilegesService= (PrivilegesService)this.getRequestContext().getWebApplicationContext().getBean("privilegesServiceImpl");
      Set<ResourcesDto> dto = privilegesService.findResourcesByUsername(username);
      for (ResourcesDto resourcesDto : dto) {
        if(this.menuAlias.equals(resourcesDto.getAlias())){
          for (PrivilegesDto pdto : resourcesDto.getPrivileges()) {
            if(this.priAlias.equals(pdto.getAlias())){
               result = true;
            }
          }
        }
      }
     } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      result =false;
    }
    return result? EVAL_BODY_INCLUDE : SKIP_BODY;
  }
}


第三步:創(chuàng)建tld標(biāo)簽,放入在web-inf下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>privilege</shortname>
  <tag>
    <name>privilege</name>
    <tagclass>com.goodidea.sso.core.PrivilegeTag</tagclass>
    <bodycontent>empty</bodycontent> <!--這里如果設(shè)為empty,則無body-->
    <attribute>
      <name>menuAlias</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>priAlias</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
</taglib>


第四:頁面引用

<#assign p=JspTaglibs["/WEB-INF/tld/privilege.tld"] />

注意tld,如果不在web.xml上進(jìn)行引入的話,就放在web-inf下,要不然會報(bào)找不到tld資源異常

補(bǔ)充知識:Springboot項(xiàng)目 freemarker 引入shiro 標(biāo)簽

springboot集成shiro權(quán)限過程略過

一、添加maven 依賴

<dependency>
 <groupId>net.mingsoft</groupId>
 <artifactId>shiro-freemarker-tags</artifactId>
 <version>0.1</version>
</dependency>

二、注入FreeMarkerConfigurer,未指定templateLoaderPath時(shí)遇到過跳轉(zhuǎn)到頁面404問題

@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() throws IOException, TemplateException {
  FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
  freeMarkerConfigurer.setTemplateLoaderPath("classpath:templates/");
  freemarker.template.Configuration configuration = freeMarkerConfigurer.createConfiguration();
  configuration.setDefaultEncoding("UTF-8");
  //這里可以添加其他共享變量 比如sso登錄地址
  configuration.setSharedVariable("shiro", new ShiroTags());
  freeMarkerConfigurer.setConfiguration(configuration);
  return freeMarkerConfigurer;
}

三、shiro標(biāo)簽

1、session中讀取登錄人信息

<@shiro.principal/>

2、帶有l(wèi)oginName屬性的對象轉(zhuǎn)換為Prinipal后保存在session

<shiro:principal property="loginName" />

3、帶有l(wèi)oginName屬性的Json(個(gè)人使用的是FashJson對象)轉(zhuǎn)換為Prinipal后保存在session,使用freemarker標(biāo)簽處理Json

<#assign loginInfo><@shiro.principal/></#assign>

<#assign data=loginInfo?eval>

用戶:${data.loginName!""}

4、其他shiro標(biāo)簽使用

<@shiro.hasPermission name="權(quán)限編碼">
...
</@shiro.hasPermission>

以上這篇springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法

    Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法

    Feign 是一個(gè)聲明式的 REST 客戶端,它用了基于接口的注解方式,很方便實(shí)現(xiàn)客戶端配置。接下來通過本文給大家介紹Spring Cloud-Feign服務(wù)調(diào)用,需要的朋友可以參考下
    2021-10-10
  • 如何準(zhǔn)確判斷郵件地址是否存在

    如何準(zhǔn)確判斷郵件地址是否存在

    本文介紹了如何判斷郵件地址是否存在的方法,具有很高的使用價(jià)值,提高了工作效率
    2015-07-07
  • Java的覆寫操作實(shí)例分析

    Java的覆寫操作實(shí)例分析

    這篇文章主要介紹了Java的覆寫操作,結(jié)合實(shí)例形式分析了java屬性覆寫及super調(diào)用父類方法覆寫相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • Java桶排序之基數(shù)排序詳解

    Java桶排序之基數(shù)排序詳解

    這篇文章主要為大家介紹了Java桶排序之基數(shù)排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 詳解SpringBoot如何開啟異步編程

    詳解SpringBoot如何開啟異步編程

    本文主要介紹了詳解SpringBoot如何開啟異步編程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 強(qiáng)烈推薦IDEA提高開發(fā)效率的必備插件

    強(qiáng)烈推薦IDEA提高開發(fā)效率的必備插件

    這篇文章主要介紹了強(qiáng)烈推薦IDEA提高開發(fā)效率的必備插件,文中有非常詳細(xì)的圖文示例,對想要提高企業(yè)開發(fā)效率的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • MyBatis-Plus實(shí)現(xiàn)邏輯刪除的示例代碼

    MyBatis-Plus實(shí)現(xiàn)邏輯刪除的示例代碼

    本文主要介紹了MyBatis-Plus實(shí)現(xiàn)邏輯刪除的示例代碼,就是通過邏輯判斷的手段表示該條數(shù)據(jù)已刪除,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java 日期時(shí)間工具包–java.time的使用

    Java 日期時(shí)間工具包–java.time的使用

    這篇文章主要介紹了Java 日期時(shí)間工具包–java.time的使用,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • Java中的Comparable接口與Comparator接口區(qū)別解析

    Java中的Comparable接口與Comparator接口區(qū)別解析

    文章介紹了Java中的Comparable接口和Comparator接口,Comparable接口定義了一個(gè)compareTo方法,用于比較對象的順序,實(shí)現(xiàn)Comparable接口的類可以提供自然排序規(guī)則,詳細(xì)介紹了Java中的Comparable接口與Comparator接口區(qū)別,感興趣的朋友一起看看吧
    2025-02-02
  • Mybatis Plus查詢時(shí)sql字段名大小寫報(bào)錯(cuò)的解決

    Mybatis Plus查詢時(shí)sql字段名大小寫報(bào)錯(cuò)的解決

    這篇文章主要介紹了Mybatis Plus查詢時(shí)sql字段名大小寫報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

内江市| 安阳市| 健康| 蛟河市| 天长市| 吐鲁番市| 天津市| 定结县| 勃利县| 大荔县| 高淳县| 宜宾县| 清水河县| 六枝特区| 扶沟县| 金川县| 定远县| 花莲县| 蒲江县| 长春市| 平阴县| 陆河县| 资溪县| 共和县| 潍坊市| 越西县| 汶上县| 玉山县| 泾阳县| 驻马店市| 永福县| 中江县| 当雄县| 攀枝花市| 华蓥市| 庆安县| 姜堰市| 布尔津县| 大港区| 湖口县| 二手房|