权限管理的两大核心是:认证和授权,前面我们已经介绍完了认证的内容,本文就给大家来介绍下SpringSecurity的授权管理

一、注解操作

  我们在控制器或者service中实现授权操作比较理想的方式就是通过相应的注解来实现。SpringSecurity可以通过注解的方式来控制类或者方法的访问权限。注解需要对应的注解支持,若注解放在controller类中,对应注解支持应该放在mvc配置文件中,因为controller类是有mvc配置文件扫描并创建的,同理,注解放在service类中,对应注解支持应该放在spring配置文件中。由于我们现在是模拟业务操作,并没有service业务代码,所以就把注解放在controller类中了。

1.1开启授权的注解支持

  这里给大家演示三类注解,但实际开发中,用一类即可!

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:security="http://www.springframework.org/schema/security"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.2.xsdhttp://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security-4.2.xsd"><!-- 配置扫描路径--><context:component-scan base-package="com.dpb.security.controller"use-default-filters="false"><context:include-filter type="annotation"expression="org.springframework.stereotype.Controller" /></context:component-scan><mvc:annotation-driven></mvc:annotation-driven><!--开启权限控制注解支持jsr250-annotations="enabled"表示支持jsr250-api的注解,需要jsr250-api的jar包pre-post-annotations="enabled"表示支持spring表达式注解secured-annotations="enabled"这才是SpringSecurity提供的注解--><security:global-method-security jsr250-annotations="enabled"pre-post-annotations="enabled"secured-annotations="enabled"/>
</beans>

1.2在注解支持对应类或者方法上添加注解

创建相关的控制器

Jsr250注解的使用

<dependency><groupId>javax.annotation</groupId><artifactId>jsr250-api</artifactId><version>1.0</version>
</dependency>


效果

Spring表达式注解使用


效果

SpringSecurity提供的注解使用


效果

1.3 权限异常处理

  对于没有访问权限的操作,我们直接给一个403的系统错误页面,用户体验也太差了,这时我们可以通过自定义异常处理来解决
自定义错误页面

方式一:在spring-security.xml配置文件中处理

方式二:编写通过SpringMVC的异常处理机制

  也可以通过我们在介绍SpringMVC时介绍的5中异常处理方式,此处大家自行完善。

方式三:web.xml文件中设置

<error-page> <error-code>403</error-code> <location>/403.jsp</location>
</error-page>

二、标签操作

  上面介绍的注解方式可以控制服务器的访问,但是我们在前端页面上也需要把用户没有权限访问的信息给隐藏起来,这时我们需要通过SpringSecurity的标签库来实现,具体如下

<%--Created by IntelliJ IDEA.User: dengpDate: 2019/12/1Time: 20:43To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="security"%>
<html>
<head><title>Title</title></head>
<body><h1>home界面</h1><br>当前登录账号:<br><security:authentication property="principal.username"/><br><security:authentication property="name"/><br><form action="/logout" method="post"><security:csrfInput/><input type="submit"value="注销"></form><security:authorize access="hasAnyRole('ROLE_ADMIN')" ><a href="#">系统管理</a></security:authorize><security:authorize access="hasAnyRole('ROLE_USER')" ><a href="#">用户管理</a></security:authorize>
</body>
</html>

用起来和我们前面介绍shiro的标签库差不多


大家要注意,标签管理仅仅是隐藏了页面,但并没有做权限管理,所以后台权限管理是必须的!

SpringSecurity授权管理介绍相关推荐

  1. SpringSecurity系列 - 17 SpringSecurity 授权管理

    文章目录 1. 权限管理 1. 授权核心概念 2. 权限管理策略 2. 基于 URL 权限管理 3. 基于 方法 权限管理 4. 授权流程 1. FilterSecurityInterceptor#i ...

  2. SpringSecurity权限管理介绍

    权限管理概念 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源.权限管 理几乎出现在任何系统里面,前提是需要有用户和密码认证的系统. 在权限管理的概念中,有 ...

  3. 华为3500光端机基本介绍_华为OSN3500光端机License授权管理介绍

    1OSN 3500智能光传输设备是华为开发的新一代智能光传输设备,采用统一交换架构,即可做为基于MPLS/MPLS-TP技术的分组设备和TDM设备使用:配合华为其他设备,OSN3500支持不同组网应用 ...

  4. 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全

    基于角色的安全是从 Windows NT 的第一个版本开始在 Windows 平台上发展而来的.使用角色,操作系统可以通过检查称为 BUILTIN\Administrators 的组的安全上下文做出一 ...

  5. RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的设置...

    在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定角色访问.此时通过我们的角色权限扩展设置就可以办到. 在我们框架V3.3 Web版本全新增加了角色权限扩展设置 ...

  6. EMR集群安全认证和授权管理

    简介:介绍EMR高安全集群如何使用Kerberos和Apache Ranger进行鉴权和访问授权管理 直达最佳实践:[EMR集群安全认证和授权管理] 最佳实践频道:[点击查看更多上云最佳实践] 这里有 ...

  7. SpringSecurity常用过滤器介绍

    SpringSecurity常用过滤器介绍 过滤器是一种典型的AOP思想 SecurityContextPersistenceFilter 首当其冲的一个过滤器,作用之重要,自不必多言. Securi ...

  8. .NET快速信息化系统开发框架 V3.2-amp;gt;WinForm版本新增新的角色授权管理界面效率更高、更规范...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chinahuyong/article/details/76735793 角色授权管理模块主要是对角色 ...

  9. linux软件包管理 pdf,中标麒麟Linux系统软件包管理介绍(22页)-原创力文档

    中标麒麟Linux服务器操作系统培训系列 中标麒麟Linux系统软件包管理介绍 技术创新,变革未来 本章目标 •了解中标麒麟Linux服务器操作系统中应用程序的 组成: •了解中标麒麟Linux服务器 ...

  10. 一站式登录授权系统(单点登录+授权管理)

    项目地址 https://github.com/minlingchao1/auth-center 项目说明 auth-center是一个轻量级的权限管理系统.其核心目标是实现公司内部各个系统的权限的集 ...

最新文章

  1. Python基础学习3
  2. NSAttributedString 详解
  3. Step by Step WebMatrix网站开发之二:使用WebMatrix(1)
  4. ThinkPHP V5.0.5漏洞_漏洞考古:thiknphp5 代码执行漏洞
  5. Spring Boot 入门例子 Hello world - TerryHe 博客园
  6. python中、变量指向的对象可以发生变化吗_python中的引用传递,可变对象,不可变对象,list注意点...
  7. 世界杯快到了,看我用Python爬虫实现(伪)球迷速成!
  8. php获取mysql所有表_PHP获取MySQL数据库里所有表的实现代码
  9. eos 编译笔记(注意点)
  10. 为什么显卡更新换代极快,每年都会有更强的新系列,而声卡却永远停留在了“兼容DX9的集成声卡“?
  11. IOCP线程池的开发-(2)
  12. Shell之分支结构和循环结构
  13. mysql使用中文报错,hibernate mysql 插入中文错误
  14. Oracle存储过程的异常处理
  15. springmvc:405 request method post not supported
  16. Worksheet Crafter Premium Edition for Mac(教学工作表制作工具)
  17. 毕设题目:Matlab优化充电
  18. Mac macOS HP打印机添加教程驱动软件下载
  19. [渝粤教育] 天水师范学院 地理信息系统原理与方法 参考 资料
  20. 爱因斯坦论教育,放在首位的该是什么?1936年美国高等教育300周年会(公号回复“爱因斯坦教育”下载PDF典藏版,欢迎转发赞赏)

热门文章

  1. gyp ERR! stack Error: EACCES: permission denied,解决
  2. CVPR2020论文列表(中英对照)
  3. linux 触摸屏多点触摸改成单点触摸 驱动调试
  4. wincc报表日报表实例_wincc报表例程
  5. Ubuntu 16.04安装搜狗拼音
  6. VR养狗,养的是寂寞还是潮流?
  7. gentoo Cataclysm - Dark Days Ahead
  8. POJ 2242 The Circumference of the Circle G++ 海伦公式 三角形外接圆半径公式 背
  9. 三点确定圆的半径_51CAE_新浪博客
  10. 数字化生产车间可视化管理——电子看板