美文网首页
Spring Security入门

Spring Security入门

作者: 8奈文摩尔8 | 来源:发表于2020-07-26 08:48 被阅读0次

Security入门

创建maven工程,设置packaging设置为war

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

配置web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <filter>
    <!--
      DelegatingFilterProxy用于整合第三方框架
      整合Spring Security时过滤器的名称必须为springSecurityFilterChain,
      否则会抛出NoSuchBeanDefinitionException异常
    -->
    <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>
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-security.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

</web-app>

创建配置spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       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.xsd">
    <!--
    【重要】【重要】【重要】
    这里面的所有路径必须以/开头,否则启动报错
    -->

    <!--  auto-config: 自动配置,自动生成login页面,login处理,退出处理
            use-expressions: 是否使用spel表达式 true: access的值可以填表达式(hasRole, hasAuthority, hasAny....)
                             false: ROEL_角色名(必须是ROLE_打,否则启动报错), 或 security写死的几个常量

     -->
    <!--  拦截规则配置  -->
    <security:http auto-config="true" use-expressions="false">
        <!--  pattern="/**" 拦截所有的路径  access="ROLE_ADMIN"
              要访问符合pattern的url时,登陆用户必须有ROLE_ADMIN的角色,如果没有则不能访问

              security:intercept-url: 可以配置多个
         -->
        <security:intercept-url pattern="/**" access="ROLE_ADMIN"/>
    </security:http>

    <!--  认证管理器  -->
    <security:authentication-manager>
        <!--  认证信息提供者,认证信息的来源
              提供登陆用户信息  用户名、密码、权限集合
              user-service-ref 指向spring容器中一个bean对象, 实现这个UserDetailsService的对象, 提供用户的名称、密码、权限集合

              一旦配置了user-service-ref,就不要配置security:user-service
        -->
        <security:authentication-provider>
            <!--   登陆用户信息由我们自己来提供         -->
            <security:user-service>
                <!--   security:user 硬编码一个用户对象在内存中,就不需要去查询数据库了
                       将来应该使用从数据库查询
                       name: 登陆的用户名  password:登陆的密码
                       authorities: 指定的权限(既可以是角色名也可以权限名) authorities与上面access一致才能访问

                       {noop}使用的是明文,no operation 不要对密码做处理
                 -->
                <security:user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"/>
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
</beans>

相关文章

网友评论

      本文标题:Spring Security入门

      本文链接:https://www.haomeiwen.com/subject/kyailktx.html