先在Spring配置Velocity视图解析器
<!-- Velocity视图解析器 默认视图 --><bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="contentType" value="text/html;charset=UTF-8" /> <property name="viewNames" value="*.html" /> <property name="suffix" value="" /> <property name="dateToolAttribute" value="date" /> <property name="numberToolAttribute" value="number" /> <property name="toolboxConfigLocation" value="/WEB-INF/velocity-toolbox.xml" /> <property name="requestContextAttribute" value="rc" /> <property name="order" value="0" /></bean><bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/page/" /> <property name="velocityProperties"> <props> <prop key="input.encoding">UTF-8</prop> <prop key="output.encoding">UTF-8</prop> <prop key="contentType">text/html;charset=UTF-8</prop> </props> </property></bean>
在WEB-INF文件夹创建velocity-toolbox.xml
<?xml version="1.0" encoding="UTF-8" ?><toolbox> <!-- velocity 自定义标签 --> <tool> <key>shiro</key> <scope>application</scope> <class>com.wstro.shiro.VelocityShiro</class> </tool></toolbox>
再来看
com.wstro.shiro.VelocityShiro
import org.apache.shiro.SecurityUtils;import org.apache.shiro.subject.Subject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/**
* Shiro权限标签(Velocity版)
*
* @author chenshun
* @email sunlightcs@gmail.com
* @date 2016年12月3日 下午11:32:47
*/public class VelocityShiro { private Logger logger = LoggerFactory.getLogger(getClass()); /**
* 是否拥有该权限
*
* @param permission
* 权限标识
* @return true:是 false:否
*/
public boolean hasPermission(String permission) {
logger.info(permission);
Subject subject = SecurityUtils.getSubject(); return subject != null && subject.isPermitted(permission);
} /**
* 是否拥有该权限
*
* @param permission
* 权限标识
* @return true:是 false:否
*/
public static boolean hasPermissionInMethod(String permission) {
Subject subject = SecurityUtils.getSubject(); return subject != null && subject.isPermitted(permission);
}
}ShiroUtils工具类
import org.apache.shiro.SecurityUtils;import org.apache.shiro.session.Session;import org.apache.shiro.subject.Subject;import com.wstro.entity.SysUserEntity;/**
* Shiro工具类
*
* @author chenshun
* @email sunlightcs@gmail.com
* @date 2016年11月12日 上午9:49:19
*/public class ShiroUtils { public static Session getSession() { return SecurityUtils.getSubject().getSession();
} public static Subject getSubject() { return SecurityUtils.getSubject();
} public static SysUserEntity getUserEntity() { return (SysUserEntity)SecurityUtils.getSubject().getPrincipal();
} public static Long getUserId() { return getUserEntity().getUserId();
}
public static void setSessionAttribute(Object key, Object value) {
getSession().setAttribute(key, value);
} public static Object getSessionAttribute(Object key) { return getSession().getAttribute(key);
} public static boolean isLogin() { return SecurityUtils.getSubject().getPrincipal() != null;
} public static void logout() {
SecurityUtils.getSubject().logout();
}
public static String getKaptcha(String key) {
String kaptcha = getSessionAttribute(key).toString();
getSession().removeAttribute(key); return kaptcha;
}
}前台Velocity模版直接调用就可以
#if($shiro.hasPermission("sys:project${projectcategory}:save")) <a
class="btn btn-primary" @click="add"><i class="fa fa-plus"></i> 新增</a>
#end这里只实现了Permission验证。如果要多个自己可以模仿这个
作者:試毅_思伟
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦