牛骨文教育服务平台(让学习变的简单)
博文笔记

自定义Shiro标签Tag

创建时间:2017-08-04 投稿人: 浏览次数:1241

1:新建.tld文件

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <description>Security JSP Tag</description>
    <tlib-version>1.1</tlib-version>
    <short-name>security</short-name>
    <uri>/security</uri>

    <tag>
        <description>判断当前用户是否拥有其中所有的角色(逗号分隔,表示“与”的关系)</description>
        <name>hasAllRoles</name>
        <tag-class>org.smart4j.plugin.security.tag.HasAllRolesTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

2:新建HasAllRolesTag,继承org.apache.shiro.web.tags.RoleTag

public class HasAllRolesTag extends RoleTag {

    private static final String ROLE_NAMES_DELIMITER = ",";

    @Override
    protected boolean showTagBody(String roleNames) {
        boolean hasAllRole = false;
        Subject subject = getSubject();
        if (subject != null) {
            if (subject.hasAllRoles(Arrays.asList(roleNames.split(ROLE_NAMES_DELIMITER)))) {
                hasAllRole = true;
            }
        }
        return hasAllRole;
    }
}

3:jsp页面引用tld文件的uri

<%@ taglib prefix="security" uri="/security" %>
<security:hasAllRoles name=""></security:hasAllRoles>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。