springboot整合shiro:基于前端的权限控制和基于后端的权限控制
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
作者 | xueheng_blog
来源 | urlify.cn/rIFJzm
问题描述:
如何让前端的某个按钮在用户拥有该按钮的权限时才显示?如何让后端的某个接口在用户拥有该访问的权限时才可以访问?
解决方法:
基于前端的权限控制:前端某个按钮的隐藏或显示可以通过shiro的页面标签来控制,当用户拥有该权限时,我们就让该按钮显示,否则隐藏;
基于后端的权限控制:后端的某个接口我们可以通过shiro的注解来控制是否允许访问,当用户拥有该权限时,我们就允许访问,否则不允许访问;
一、基于前端的权限控制
| 标签名 | 作用 | 
|---|---|
| shiro:guest | 允许游客访问的代码块 | 
| shiro:user | 允许已经验证或者通过"记住我"登录的用户才能访问的代码块。 | 
| shiro:authenticated | 只有通过登录操作认证身份,而并非通过"记住我"登录的用户才能访问的代码块。 | 
| shiro:notAuthenticated | 未登录的用户显示的代码块。 | 
| shiro:principal | 显示当前登录的用户信息。 | 
| 只有拥有admin角色的用户才能访问的代码块。 | |
| 只有拥有admin或者manager角色的用户才能访问的代码块。 | |
| 没有admin角色的用户显示的代码块 | |
| 只有拥有"admin:delete"权限的用户才能访问的代码块。 | |
| 没有"admin:delete"权限的用户显示的代码块。 | 
1、添加依赖
    org.apache.shiro 
    shiro-spring 
    1.4.0 
    com.github.theborakompanioni 
    thymeleaf-extras-shiro 
    2.0.0 
2、在页面头上加标签支持
"http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
3、配置shiro标签
//配置ShiroDialect:用于thymeleaf和shiro标签配合使用
@Bean
public ShiroDialect getShiroDialect(){
    return new ShiroDialect();
}
4、在页面中使用shiro标签进行权限控制:有两种方式
二、基于后端的权限控制
1、添加依赖
    org.apache.shiro 
    shiro-spring 
    1.4.0 
    com.github.theborakompanioni 
    thymeleaf-extras-shiro 
    2.0.0 
  2、配置注解支持
/**
 * 开启shiro aop注解支持.
 */
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
    AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor =       new AuthorizationAttributeSourceAdvisor();
    authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
    return authorizationAttributeSourceAdvisor;
}3、在控制层接口上添加注解
@GetMapping("/users")
@RequiresPermissions("sys:user:list") //只有拥有该权限的用户才能访问该接口
public DataResult> getAllDept(User user){
    DataResult result =DataResult.success();
    result.setData(this.userService.getUser());
    return result;
}


     
感谢点赞支持下哈 ![]()
评论
