TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网产品结构SpringSecurity思维脑图思维导图

SpringSecurity思维脑图思维导图

  收藏
  分享
免费下载
免费使用文件
灰色と青 浏览量:112023-11-30 19:58:42
已被使用0次
查看详情SpringSecurity思维导图

内容简介,执行流程与入门案例内容讲解

树图思维导图提供 SpringSecurity思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 SpringSecurity思维脑图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:251ca08f62f7477ff280a1760f075b54

思维导图大纲

SpringSecurity-01思维导图模板大纲

权限控制概述

1.1权限控制出现的原因

在JavaWeb项目中

问题1:在生产环境下,一个项目模块可以在不登录的时候操作吗? 肯定是不行的,首先要登录才能进行操作

问题二:是不是所有用户只要登录成功就可以操作 所有的功能模块? 不行,不是只要登录成功就可以操作所有的模块 不同的角色会展示不同的菜单,可以操作的模块功能也是不一样的

1.2权限控制简介

认证

认证的本质就是登录,系统提供的用于识别用户身份的功能 通常提供用户名 和 密码 其实就是在进行认证 认证的目的就是让系统知道你是谁

授权

用户认证成功后,需要为用户授权, 其实就是指定当前用户 拥有哪些 角色, 这些 角色有哪些 权限 这些 权限 可以控制操作 哪些功能

常用的权限控制框架

SpringSecurity

这个框架是当前最主流的框架

Apache Shiro

不常用,知道就行

1.3权限控制数据模型

用户表和角色表是多对多关系 角色表和权限表是多对多关系 角色表和菜单表是多对多关系

要实现最终的权限控制,需要表结构支撑

用户表

t_user

权限表

t_permission

角色表

t_role

菜单表

t_menu

用户角色关系表

t_user_role

角色权限关系表

t_role_permission

角色菜单关系表

t_role_menu

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

SpringSecurity入门案例

SprignSecurity快速入门

首先创建一个JavaWeb项目 通过maven

在项目的pom.xml文件中引入相关依赖

spring-webmvc

spring-security-core

spring-security-web

spring-security-config

spring-security-taglibs

添加tomcat插件

tomcat7-maven-plugin

在项目的web.xml文件中进行相关配置

springSecurity入口

filter DelegatingFilterProxy委托筛选代理

filter mapping springSecurityFilterChain spring安全过滤链

在项目的resources中创建spring-security.xml文件,并进行相关权限控 制

配置mvc-anno mvc注解支持 context:component-scan包扫描 视图解析器mvc:view-resolvers InternalResourceViewResolver

<!-- 一: 匿名访问规则设置-->

<security:http pattern="/pages/**" security="none"/>

<security:http pattern="/login.jsp" security="none"/>

<!-- 二: 权限控制规则配置--> <security:http auto-config="true" use-expressions="true"

<!-- 2.1 权限控制的资源路径为所有路径 及其子路径 且必须拥有对应角色才能访问

<security:intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')"/>

<!-- 2.2自定义登录页面

<security:form-login login-page="/login.jsp" username-parameter="username" password-parameter="password" login-processing-url="/login" default-target-url="/index.jsp" always-use-default-target="true" authentication-failure-url="/login.jsp" />

<!-- 2.3禁用csrf过滤器 -->

<security:csrf disabled="true"/>

<!-- 三:构建UserDetailsService的bean对象 -->

<bean id="userDetailService" class="com.lanou.security.SpringSecurityUserDetailService"/>

自己创建 用户详细信息服务类

<!-- 四:配置认证授权管理器 -->

<security:authentication-manager> <!--认证信息提供者,当判断访问路径的用户是否登录时,就需要拿着访问路径信息和提供者设置的用户信息比较,一致登录--> <security:authentication-provider user-service-ref="userDetailService"> <!-- 需要在java中包中配置实体类实现userDetailService接口 -->

authentication-mannnager <!-- 主要用来管理访问路径对应的用户和认证的授权规则 -->

authentication-provider

ser-service-ref="userDetailService"

<!-- 需要在java中包中配置实体类实现userDetailService接口 -->

<!--认证信息提供者,当判断访问路径的用户是否登录时,就需要拿着访问路径信息和提供者设置的用户信息比较,一致登录-->

编写具体用户详细服务类 (自定义登录类) (认证授权类)

认证授权类

赖注入Mapper接口

/**当用户在登录页面输入账号和密码之后,点击登录按钮访问springsecurity后台代码, * springsecurity默认会调用此方法 *1.查询数据库中的用户信息,判断用户是否存在 ————————————————————认证 *2。查询用户的 角色表 权限表 ,构建权限 ,并给登录的用户 赋予权限——————授权 * *3.判断用户 输入的密码是否 和 数据库中查询出来的一致 内部进行,不用自己编写

/1.根据页面用户输入的账户信息,查询数据库中的用户信息,判断用户是否存在

//用户存在, //2.根据用户的id信息,查询数据库中用户对应的 // 角色表 和 权限表, // 构权 , 并给登录的用户赋权

//赋权 //3.判断用户输入的密码是否和数据库查询出来的一致 //参数1:登录用户的用户名 //参数2:数据库查询出来的用户的密码 //参数3:给用户赋的权 org.springframework.security.core.userdetails.User userDetails = new org.springframework.security.core.userdetails.User(user.getUserName(),"{noop}"+user.getPassword(),list);

匿名访问

<!-- 一: 匿名访问规则设置-->

<security:http pattern="/pages/**" security="none"/>

<security:http pattern="/login.jsp" security="none"/>

自定义登录

<!-- 2.2自定义登录页面

<security:form-login login-page="/login.jsp" username-parameter="username" password-parameter="password" login-processing-url="/login" default-target-url="/index.jsp" always-use-default-target="true" authentication-failure-url="/login.jsp" />

自定义认证

编写一个类SpringSecurityUserService,实现UserDetailsService接口, 并实现loadUserByUsername。

子主题 1

SpringSecurity简介

Spring Security是Spring 提供的安全认证服务的 框架 ,是一个 能够基于spring的企业应用系统提供声明式 的安全访问控制解决方案的 安全 框架

它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC,DI(控制反转 Inversion of Control ,DI:Dependency Injection 依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明 式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的 工作。

SpringSecurity执行流程

相关思维导图模板

线尚线思维脑图思维导图

树图思维导图提供 线尚线思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 线尚线思维脑图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:b18ab228102bb24c74e3227330b6849e

工程项目文档思维导图思维导图

树图思维导图提供 工程项目文档思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 工程项目文档思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:718a88d0c4fb7156de16d684c08f2d78