1.认证
spring security3这本书中这样描述认证:"认证是鉴别我们应用中的用户是他们所声明的那个人",,其实这句话的大概意思是:用户通过提供一些验证信息给服务器,服务器接收验证信息后和一些原数据进行对比(如数据库等),对比如果成功,那么就说明用户通过了认证。
2.授权
有两种授权的概念,分别是这样的:
“
第一个是已经认证的安全实体与一个或多个权限(authorities)的匹配关系(通常称为角色)。例如,一个非正式的用户访问你的网站将被视为只有访问的权限而一个网站的管理员将会被分配管理的权限。
第二个是分配权限检查给系统中要进行安全保护的资源。通常这将会在系统的开发过程中进行,有可能会通过代码进行明确的声明也可能通过参数进行设置。例如,在我们应用中管理宠物商店详细目录的界面只能对具有管理权限的用户开放。
”
书中这样诠释了这两种授权,以我的理解看来,大概是这样的意思: 第一种授权的概念是,当用户通过一些凭证信息交给服务器去验证时,服务器通过验证,然后将此用户的一些权限交付给验证的用户,这个过程叫做授权。第二种授权的概念是,当用户访问某一个页面时,服务器会判断用户是否有权限去访问该页面,如果有权限访问,将会让用户去访问,这种方式也叫做授权。
3.运行第一个项目
我将书中的第一个例子运行起来了,配置和修改了部分的xml文件。大概是跑起来了,我在此粗略的说一下项目的搭建架构,和spring security配置文件中,我们可以看到的一些内容。
首先我们先来看一下项目的web.xml文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- id="DogStoreApp" version="2.5">
- <display-name>Dog Store</display-name>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- /WEB-INF/dogstore-security.xml
- /WEB-INF/dogstore-base.xml
- </param-value>
- </context-param>
- <!-- 初始化spring容器的监听器 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- spring mvc的一个servlet 其实就是拦截器 -->
- <servlet>
- <servlet-name>dogstore</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>dogstore</servlet-name>
- <url-pattern>*.do</url-pattern>
- <url-pattern>/home.do</url-pattern>
- </servlet-mapping>
- <!-- spring security的过滤器 -->
- <filter>
- <filter-name>springSecurityFilterChain</filter-name>
- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>springSecurityFilterChain</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <welcome-file-list>
- <welcome-file>home.do</welcome-file>
- </welcome-file-list>
- </web-app>
那好,接下来我们查看一下spring security的配置文件。
- <?xml version="1.0" encoding="UTF-8"?>
- <beans:beans xmlns="http://www.springframework.org/schema/security"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
- xsi:schemaLocation="
- http://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-3.2.xsd
- ">
- <!-- Ch 2 Start -->
- <http auto-config="true">
- <intercept-url pattern="/*" access="ROLE_USER" />
- </http>
- <!-- Ch 2 Unanimous Based AccessDecisionManager <http auto-config="true"
- access-decision-manager-ref="unanimousBased"> <intercept-url pattern="/*"
- access="ROLE_USER"/> </http> -->
- <!-- Ch 2 SpEL <http auto-config="true" use-expressions="true" access-decision-manager-ref="unanimousBased">
- <intercept-url pattern="/*" access="hasRole('ROLE_USER')"/> </http> -->
- <authentication-manager alias="authenticationManager">
- <authentication-provider>
- <user-service>
- <user authorities="ROLE_USER" name="guest" password="guest" />
- </user-service>
- </authentication-provider>
- </authentication-manager>
- </beans:beans>
简单的可以看出来,spring security文档正文中使用了两个标签,我们从他们大概的字面上可以了解到,第一个http标签其实主要是配置拦截url用的,里边大概配置了如果你要访问某个路径,需要哪个连接权限,而http标签下边的authentication-manger标签下的标签则配置了那些用户都拥有哪些权限,,,这是我们从字面上了解到的内容,我们不需要了解太深入,。这次只需要把这个项目运行起来,然后通过运行项目,先读懂里边的大概流程就可以了。
我将项目调整完成后,录制了一个关于运行项目的小视频可以供大家参考。
我将调整完成的项目和视频发布到了百度网盘上。大家可以免费下载。