权限控制——SpringSecurity应用

本文介绍了SpringSecurity作为Web应用安全解决方案的核心功能,包括用户认证和授权。详细阐述了权限模块的数据模型,涉及用户、权限、角色和菜单等7张表的关系。还讲述了初始项目创建的步骤,如配置Maven坐标、提供index.html页面和设置web.xml。同时,文中列举了在配置过程中可能遇到的错误及解决办法。
摘要由CSDN通过智能技术生成

1. SpringSecurity是什么

SpringSecurity基于Spring框架,提供了一套Web应用安全性的完整解决方案
一般来说,Web应用的安全性包括用户认证(Authenticataion)和用户授权(Authorization)两个部分。

Spring Security具有两个重要核心功能:
(1)用户认证:用户能否登录
(2)用户授权:指定当前用户可以操作哪些功能

官网:https://spring.io/projects/spring-security

2. 权限模块数据模型

用户表t_user、权限表t_permission、角色表t_role、菜单表t_menu、用户角色关系表t_user_role、角色权限关系表t_role_permission、角色菜单关系表t_role_menu。

表之间关系如下图:

权限模块共涉及到如上7张表。其中,角色表最为重要,处于核心位置,因为用户、权限、菜单都和角色是多对多关系。

认证和授权过程中分别会使用到不同的表,所需表如下:

  • 认证过程:只需要用户表。在用户登录时查询用户表t_user进行校验,判断用户输入的用户名和密码是否正确。
  • 授权过程:上示图中七张表都会被使用。用户必须完成认证之后才可以进行授权,首先可以根据用户查询其角色,再根据角色查询对应的菜单,这样就确定了用户能够看到哪些菜单。然后再根据用户的角色查询对应的权限,这样就确定了用户拥有哪些权限。

3. 初始项目创建

3.1 导入Spring Security环境——添加对应Maven坐标

  <!-- 安全框架 -->
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>5.0.5.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>5.0.5.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>5.0.5.RELEASE</version>
      </dependency>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>SpringSecurityDemo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>SpringSecurityDemo Maven Webapp</name>
  <!-- FIXME change it to the project's we
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值