本文共 2002 字,大约阅读时间需要 6 分钟。
freemark实现控制前端的操作的入口(控制了其显示与否),shiro把控了后端的操作入口。
package com.debug.pmp.server.config;import com.debug.pmp.server.shiro.ShiroVariable;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import java.util.HashMap;import java.util.Map;import java.util.Properties;//Freemarker配置@Configurationpublic class FreemarkerConfig { @Bean public FreeMarkerConfigurer freeMarkerConfigurer(ShiroVariable shiroVariable){ FreeMarkerConfigurer configurer = new FreeMarkerConfigurer(); configurer.setTemplateLoaderPath("classpath:/templates"); Mapvariables = new HashMap<>(1); variables.put("shiro", shiroVariable); configurer.setFreemarkerVariables(variables); Properties settings = new Properties(); settings.setProperty("default_encoding", "utf-8"); settings.setProperty("number_format", "0.##"); configurer.setFreemarkerSettings(settings); return configurer; }}
作用是:判断当前登录的主题是否具有制定的权限
package com.debug.pmp.server.shiro;/** * Created by Administrator on 2019/8/4. */import org.apache.shiro.SecurityUtils;import org.apache.shiro.subject.Subject;import org.springframework.stereotype.Component;/** * 推送给前端使用的shiro对象变量 * @Author:debug (SteadyJack) * @Date: 2019/8/4 22:29 **/@Componentpublic class ShiroVariable { /** * 判断当前登录用户(主体)是否有 指定的权限 * @param permission 指定的权限 * @return */ public Boolean hasPermission(String permission){ Subject subject=SecurityUtils.getSubject(); /*if (subject!=null && subject.isPermitted(permission)){ return true; } return false;*/ return (subject!=null && subject.isPermitted(permission))? true : false; }}
当执行<#if shiro.hasPermission("sys:user:save")>时候,就会调用ShiroVariable类中的方法,来判断是否具有权限。
用户登录成功后,可以将用户所属的权限集合返回给前端,前端做判断处理。
转载地址:http://aatgi.baihongyu.com/