Shiro框架的四种权限控制方式
来源:互联网 发布:windows chakan elf 编辑:程序博客网 时间:2024/05/17 02:59
在自定义的realm中进行权限控制
- 在shiro-config.xml追加
/user/delete = perms["delete"]
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <!-- 配置登录页 --> <property name="loginUrl" value="/login.jsp" /> <!-- 配置登录成功后的页面 --> <property name="successUrl" value="/list.jsp" /> <property name="unauthorizedUrl" value="/unauthorized.jsp" /> <property name="filterChainDefinitions"> <value> <!-- 静态资源允许访问 --> <!-- 登录页允许访问 --> /login.jsp = anon /test/login = anon /user/delete = perms["delete"] /logout = logout <!-- 其他资源都需要认证 --> /** = authc </value> </property> </bean>
此时访问/user/delete需要delete权限,在自定义Realm中为用户授权。
@Override protected AuthorizationInfo doGetAuthorizationInfo( PrincipalCollection principals) { String username = (String) principals.getPrimaryPrincipal(); User user = new User(); user.setUsername(username); SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); //为用户授权,只需将用户的权限添加到info即可 info.addStringPermission("delete"); List roleList = userService.getRole(user); if(roleList != null){ for (Role role : roleList) { authorizationInfo.addRole(role.getName()); } return authorizationInfo; } return null; }
##使用shiro注解为用户授权1. 在shiro-config.xml开启shiro注解(硬编码,不好用)<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean>
2. 在service方法上配置注解@RequiresPermissions(“user:delete”)
@RequiresPermissions("user:delete") public void delete(){ //逻辑代码 }
使用shiro标签进行权限控制
- 在jsp页面引入shiro标签库
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
- 在页面中使用标签
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><c:set var="proPath" value="${pageContext.request.contextPath }" /><%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><!-- <shiro:principal>代表的是登录的认证名-->${successMsg } Welcome! <shiro:principal></shiro:principal><br><br><!-- 有这个角色则会显示User Page链接--><shiro:hasAnyRoles name="user"> <a href="${proPath }/user.jsp"> User Page</a></shiro:hasAnyRoles><br><br><!-- 有这个角色则会显示Admin Page链接--><shiro:hasAnyRoles name="admin"> <a href="${proPath }/admin.jsp"> Admin Page</a></shiro:hasAnyRoles><!-- 有这个delete权限则会显示删除按钮--><shiro:hasPermission name="delete"> <input type="button" value="删除"></shiro:hasPermission><br><br><a href="${proPath }/test/logout">Logout</a></body></html>
编程方式实现用户权限控制
Subject subject = SecurityUtils.getSubject(); if(subject.hasRole("admin")){ //有权限 }else{ //无权限 }
阅读全文
0 0
- Shiro框架的四种权限控制方式
- 权限控制框架 shiro
- Shiro 权限控制框架
- 权限控制框架-shiro
- shiro-权限控制框架
- 权限控制框架-shiro
- 权限控制框架-shiro
- 权限控制框架-shiro
- 权限控制框架-shiro
- 总结Shiro提供的权限控制方式
- shiro框架的权限控制(Spring整合)
- shiro---认识权限控制框架
- java权限控制框架shiro
- 项目权限控制的管家——Apache Shiro框架
- shiro权限控制的应用
- java项目权限控制的理解和示例(基于shiro和传统拦截器filter两种方式)
- Shiro简单的角色权限控制
- Shiro的认证和权限控制
- android 已安装存在签名冲突的同名数据包
- 用两万篇论文告诉你:机器学习在过去五年中发生了什么
- 【机器学习系列之六】决策树中的特征选择及树的剪枝()
- [agc007c]Pushing Balls
- Kickstart
- Shiro框架的四种权限控制方式
- 最小m段和dp
- 如何在内存卡上为Raspberry Pi 3 安装Ubuntu-mate-16.04系统?
- 面向对象程序设计上机练习十(运算符重载)
- WLAN标准
- 51nod 1535 深海探险 并查集判断环和连通度
- comparator接口与Comparable接口的区别
- Java 子类构造函数默认调用父类构造函数super
- console .log