shiro的使用freemark实现前端控制权限

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shiro的使用freemark实现前端控制权限相关的知识,希望对你有一定的参考价值。

一 思路

freemark实现控制前端的操作的入口(控制了其显示与否),shiro把控了后端的操作入口。

二 操作配置

2.1 配置application

2.2 配置文件

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配置
@Configuration
public class FreemarkerConfig {

    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer(ShiroVariable shiroVariable){
        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
        configurer.setTemplateLoaderPath("classpath:/templates");

        Map<String, Object> variables = 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;
    }

}

 2.3 shiro的变量

作用是:判断当前登录的主题是否具有制定的权限

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
 **/
@Component
public 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;
    }

}


























2.4 html页面

当执行<#if shiro.hasPermission("sys:user:save")>时候,就会调用ShiroVariable类中的方法,来判断是否具有权限。

三 前后端分离

用户登录成功后,可以将用户所属的权限集合返回给前端,前端做判断处理。

 

 

以上是关于shiro的使用freemark实现前端控制权限的主要内容,如果未能解决你的问题,请参考以下文章

Springboot + Vue + shiro 实现前后端分离权限控制

Spring Boot + Shiro 实现前后端分离权限控制

Spring Boot + Vue + Shiro 实现前后端分离权限控制

Spring Boot + Vue + Shiro 实现前后端分离权限控制

freemarker集成shiro标签

Shiro + SSM(框架) + Freemarker(jsp)