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类中的方法,来判断是否具有权限。

三 前后端分离

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

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值