这篇文章主要介绍了springboot 自定义权限标签(tld),在freemarker引用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
第一步:引入jar包
javax.servlet.jspjsp-api2.2.1-b03
第二步:自定义标签类
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 = 5344<em style="color:transparent">来源[email protected]搞@^&代*@码网</em>16848523276042L; 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 attributes = principal.getAttributes(); String username=(String) attributes.get("username"); PrivilegesService privilegesService= (PrivilegesService)this.getRequestContext().getWebApplicationContext().getBean("privilegesServiceImpl"); Set 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下
1.01.1privilege privilegecom.goodidea.sso.core.PrivilegeTagempty<!--这里如果设为empty,则无body--> menuAliastruetrue priAliastruetrue
第四:页面引用
注意tld,如果不在web.xml上进行引入的话,就放在web-inf下,要不然会报找不到tld资源异常
补充知识:Springboot项目 freemarker 引入shiro 标签
springboot集成shiro权限过程略过
一、添加maven 依赖
net.mingsoftshiro-freemarker-tags0.1
二、注入FreeMarkerConfigurer,未指定templateLoaderPath时遇到过跳转到页面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标签
1、session中读取登录人信息
2、带有loginName属性的对象转换为Prinipal后保存在session
3、带有loginName属性的Json(个人使用的是FashJson对象)转换为Prinipal后保存在session,使用freemarker标签处理Json
用户:${data.loginName!””}
4、其他shiro标签使用
…
以上这篇springboot 自定义权限标签(tld),在freemarker引用操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持gaodaima搞代码网。
以上就是springboot 自定义权限标签(tld),在freemarker引用操作的详细内容,更多请关注gaodaima搞代码网其它相关文章!