广州做网站mxszpt,一站式网络营销,衡阳哪有做网站推广的,网站域名设计SpringSecurity 1 初识权限管理1.1 权限管理的概念1.2 权限管理的三个对象1.3 什么是SpringSecurity 2 SpringSecurity第一个入门程序2.1 SpringSecurity需要的依赖2.2 创建web工程2.2.1 使用maven构建web项目2.2.2 配置web.xml2.2.3 创建springSecurity.xml2.2.4 加载springSe… SpringSecurity 1 初识权限管理1.1 权限管理的概念1.2 权限管理的三个对象1.3 什么是SpringSecurity 2 SpringSecurity第一个入门程序2.1 SpringSecurity需要的依赖2.2 创建web工程2.2.1 使用maven构建web项目2.2.2 配置web.xml2.2.3 创建springSecurity.xml2.2.4 加载springSecurity.xml配置文件 目标模块: 初识认证和授权案例入门理解SpringSecurity过滤器使用自定义认证页面使用数据库完成认证 1 初识权限管理
1.1 权限管理的概念
权限管理一般指根据系统设置的安全规则或者安全策略用户可以访问而且只能访问自己被授权的资源。权限管理几乎出现在任何系统里面前提是需要有用户和密码认证的系统。 在权限管理的概念中有两个非常重要的名词 认证通过用户名和密码成功登陆系统后让系统得到当前用户的角色身份。 如何理解认证?用户认证就是判断一个用户的身份是否合法的过程用户去访问系统资源时系统要求验证用户的身份信息身份合法方可继续访问不合法则拒绝访问。常见的用户身份认证方式有用户名密码登录二维码登录手机短信登录指纹认证等方式。 授权系统根据当前用户的角色给其授予对应可以操作的权限资源。 如何理解授权?拿微信来举例子微信登录成功后用户即可使用微信的功能比如发红包、发朋友圈、添加好友等。其中有一个功能微信运动。只有你授权运行微信运动功能的运行你每天才可以看见你的步数。如果不授权你是看不到的。
1.2 权限管理的三个对象
用户主要包含用户名密码和当前用户的角色信息可实现认证操作。 角色主要包含角色名称角色描述和当前角色拥有的权限信息可实现授权操作。 权限权限也可以称为菜单主要包含当前权限名称url地址等信息可实现动态展示菜单。 注这三个对象中用户与角色是多对多的关系角色与权限是多对多的关系用户与权限没有直接关系二者是通过角色来建立关联关系的。
1.3 什么是SpringSecurity SpringSecurity是spring采用AOP思想基于servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。
2 SpringSecurity第一个入门程序
2.1 SpringSecurity需要的依赖
SpringSecurity主要jar包功能介绍:
spring-security-core.jar核心包任何SpringSecurity功能都需要此包。spring-security-web.jar web工程必备包含过滤器和相关的Web安全基础结构代码。spring-security-config.jar用于解析xml配置文件用到SpringSecurity的xml配置文件的就要用到此包。spring-security-taglibs.jarSpringSecurity提供的动态标签库jsp页面可以用。
dependency
groupIdorg.springframework.security/groupId
artifactIdspring-security-taglibs/artifactId
version${spring.security.version}/version
/dependency
dependency
groupIdorg.springframework.security/groupId
artifactIdspring-security-config/artifactId
version${spring.security.version}/version
/dependency由于和web工程集成我们在项目中可以不用引入core和web的依赖。因为spring工程有spring-core包springmvc有spring-web包。可以依赖传递过来。2.2 创建web工程
2.2.1 使用maven构建web项目
构建过程省略然后引入相关的依赖。
propertiesspring.version5.1.6.RELEASE/spring.versionspring.security.version5.1.6.RELEASE/spring.security.version
/properties
dependencies
dependency
groupIdorg.springframework/groupId
artifactIdspring-context/artifactId
version${spring.version}/version
/dependency
dependency
groupIdorg.springframework/groupId
artifactIdspring-web/artifactId
version${spring.version}/version
/dependency
dependency
groupIdorg.springframework/groupId
artifactIdspring-webmvc/artifactId
version${spring.version}/version
/dependency
dependency
groupIdjavax.servlet/groupId
artifactIdjavax.servlet-api/artifactId
version3.1.0/version
scopeprovided/scope
/dependency
dependency
groupIdjavax.servlet/groupId
artifactIdjsp-api/artifactId
version2.0/version
scopeprovided/scope
/dependencydependency
groupIdorg.slf4j/groupId
artifactIdslf4j-log4j12/artifactId
version1.7.26/version
/dependencydependency
groupIdorg.springframework.security/groupId
artifactIdspring-security-taglibs/artifactId
version${spring.security.version}/version
/dependency
dependency
groupIdorg.springframework.security/groupId
artifactIdspring-security-config/artifactId
version${spring.security.version}/version
/dependency
/dependencies2.2.2 配置web.xml
?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://xmlns.jcp.org/xml/ns/javaeexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1display-nameArchetype Created Web Application/display-name!-- context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:spring-security.xml/param-value/context-param--!--监听器--!-- listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener--!--委派过滤器--filterfilter-namespringSecurityFilterChain/filter-namefilter-classorg.springframework.web.filter.DelegatingFilterProxy/filter-class/filterfilter-mappingfilter-namespringSecurityFilterChain/filter-nameurl-pattern/*/url-pattern/filter-mapping
/web-app2.2.3 创建springSecurity.xml
?xmlversion1.0encodingUTF-8?
beansxmlnshttp://www.springframework.org/schema/beans
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xmlns:securityhttp://www.springframework.org/schema/security
xsi:schemaLocationhttp://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd
!--
auto-config:true开启spring-security的自动配置
use-expressionstrue允许使用spring表达式
--
security:http auto-configtrueuse-expressionstrue
!--
intercept-url:拦截的请求资源/**所有的请求全部拦截
access:访问资源所需要的角色
--
security:intercept-urlpattern/**accesshasAnyRole(ROLE_ADMIN,ROLE_USER)/security:intercept-url
/security:http
!--配置认证管理器--
security:authentication-manager
!--配置认证提供者--
security:authentication-provider
!--配置认证服务--
security:user-service
!--
配置认证者
name用户名
password密码
authorities权限资源
--
security:usernameuserpassword{noop}userauthoritiesROLE_USER/security:user
security:usernameadminpassword{noop}adminauthoritiesROLE_ADMIN/security:user
/security:user-service
/security:authentication-provider
/security:authentication-manager
/beans2.2.4 加载springSecurity.xml配置文件
context-param
param-namecontextConfigLocation/param-name
param-valueclasspath:spring-security.xml/param-value
/context-param
listener
listener-classorg.springframework.web.context.ContextLoaderListener/listener-class
/listener整个web.xml文件最后目录如下:
到这里我们第一个springSecurity案例搭建完毕。启动tomcat查看效果: 这个登录页面是谁写的?我们查看网页源代码看看:
我们再去看看控制台发生了什么 我们发现加载了很多过滤器。 最后我们在这个登录页面上输入用户名user密码user点击Signin好了总算再次看到首页了