亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

springboot 自定義權限標簽(tld),在freemarker引用操作

瀏覽:4日期:2023-04-22 17:19:23

第一步:引入jar包

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

第二步:自定義標簽類

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: 權限標簽類 * @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; }}

第三步:創建tld標簽,放入在web-inf下

springboot 自定義權限標簽(tld),在freemarker引用操作

<?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> <!--這里如果設為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上進行引入的話,就放在web-inf下,要不然會報找不到tld資源異常

補充知識:Springboot項目 freemarker 引入shiro 標簽

springboot集成shiro權限過程略過

一、添加maven 依賴

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

二、注入FreeMarkerConfigurer,未指定templateLoaderPath時遇到過跳轉到頁面404問題

@Beanpublic 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標簽

1、session中讀取登錄人信息

<@shiro.principal/>

2、帶有loginName屬性的對象轉換為Prinipal后保存在session

<shiro:principal property='loginName' />

3、帶有loginName屬性的Json(個人使用的是FashJson對象)轉換為Prinipal后保存在session,使用freemarker標簽處理Json

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

<#assign data=loginInfo?eval>

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

4、其他shiro標簽使用

<@shiro.hasPermission name='權限編碼'>...</@shiro.hasPermission>

以上這篇springboot 自定義權限標簽(tld),在freemarker引用操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
主站蜘蛛池模板: 国产高清狼人香蕉在线观看 | 久久久久亚洲 | 在线亚视频 | 欧美成人免费全部色播 | 毛茸茸年轻成熟亚洲人 | 亚洲欧美成人一区二区在线电影 | 一级黄色a级片 | 成人毛片网 | 亚洲色在线视频 | 免费观看三级毛片 | 日韩亚洲视频 | 一区二区三区高清在线 | 国产小视频在线观看www | 在线永久免费观看的毛片 | 国产精品高清一区二区 | 在线黄色影院 | 成人午夜在线观看国产 | 欧美乱妇欲仙欲死视频免费 | 国产90后美女露脸在线观看 | 国产欧美日韩不卡一区二区三区 | 亚洲成综合| 美国毛片毛片全部免费 | 金发美女与黑人巨大交 | 免费三级大片 | 国产原创一区二区 | 日本a一级毛片免费观看 | 久久久久久国产a免费观看黄色大片 | 久久99精品久久久久久秒播 | 国产精品玖玖玖在线观看 | 99亚洲乱人伦精品 | 黄色丝袜网站 | 中文字幕亚洲精品第一区 | 青草视频在线观看免费视频 | 国产原创91 | 日韩精品久久不卡中文字幕 | 一区二区三区在线观看视频 | 国产在线观看一区 | 欧美日韩亚洲综合在线一区二区 | 亚洲国产日韩在线人成蜜芽 | 国产在线观看高清精品 | 国产午夜毛片一区二区三区 |