zoukankan      html  css  js  c++  java
  • Spring Security框架整合我们的项目

    我们如何在项目中使用该框架需要导入依赖

    1、导入依赖

    <!-- 身份验证 -->
                <dependency>
                    <groupId>org.springframework.security</groupId>
                    <artifactId>spring-security-web</artifactId>
                    <version>4.1.0.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework.security</groupId>
                    <artifactId>spring-security-config</artifactId>
                    <version>4.1.0.RELEASE</version>
                </dependency>

    2、web.xml文件配置,官方文档

      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-security.xml</param-value>
      </context-param>
      <listener>
        <listener-class>
          org.springframework.web.context.ContextLoaderListener
        </listener-class>
      </listener>
    
      <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>

    3、resources目录下创建spring,创建spring-security.xml<?xml version="1.0" encoding="UTF-8"?><beans:beans 

        xmlns="http://www.springframework.org/schema/security"
        xmlns:beans="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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">
    
         <!--不被拦截的内容-->
        <http pattern="/login.html" security="none"/>
        <http pattern="/css/**" security="none"/>
        <http pattern="/img/**" security="none"/>
        <http pattern="/js/**" security="none"/>
        <http pattern="/plugins/**" security="none"/>
        
        <!-- use-expressions:设置是否启动SpEL表达式,默认值是true。 -->
        <http use-expressions="false">
            <!-- 
                配置SpringSecurity的拦截路径(拦截规则)  
    * access:设置角色 角色命名 ROLE_角色名称 如: ROLE_USER --> <intercept-url pattern="/**" access="ROLE_ADMIN"/> <!-- 开启表单验证 username-parameter="username" 前端页面中用户名的name必须为username password-parameter="password" 密码必须为password login-page :默认跳到该页面,登录页面名称 以/开始 default-target-url :登录成功后跳转的页面 login-processing-url:提交的路径的设置 默认值"/login" 可以修改 --> <form-login login-page="/login.html" default-target-url="/admin/index.html" always-use-default-target="true" authentication-failure-url="/login.html"/> <!-- 不使用csrf的校验 --> <csrf disabled="true"/> <!-- 配置框架页面不拦截 --> <headers> <frame-options policy="SAMEORIGIN"/> </headers> <!-- 注销的配置 --> <logout logout-url="/logout" logout-success-url="/login.html" /> </http> <!-- 配置认证管理器 --> <authentication-manager> <!-- 认证的提供者 --> <authentication-provider> <user-service> <user name="admin" password="123456" authorities="ROLE_ADMIN"/> <user name="wc" password="123456" authorities="ROLE_ADMIN"/> </user-service> </authentication-provider> </authentication-manager> </beans:beans>

    //如果你在系统中使用了框架页,必须要设置框架页的策略为SAMEORIGIN



    <headers> <frame-options policy="SAMEORIGIN"/> </headers>

    此时启动项目,直接访问index.html会自动跳转到login.html页面,必须角色和用户名,密码正确后才会跳转到index.html页面

    且前端页面的name关键字,必须为username,password。此框架才能够获取并判断用户名密码是否正确。

    4、前端页面

     

    5、进行数据的回填

      在index界面找到对应的发送数据的url,根据此url创建接口,获取spring security 中的登陆name,SecurityContextHolder.getContext().getAuthentication().getName(); //获取登陆的用户名。

    @RequestMapping("/showName")
        public Map<String,String> showName(){
            String name = SecurityContextHolder.getContext().getAuthentication().getName();
            Map<String,String> map = new HashMap<>();
            map.put("username",name);
            return map;
        }
  • 相关阅读:
    PHP+MYSQL单例模式的滑铁卢
    碰到一个安装SQl2008 Express Edition出错的怪异情况
    用虚拟并口解决向USB条码打印机发送ZPL指令的解决方案
    让excanvas支持动态创建的canvas标签(附演示文件)
    sql 检索语句
    c++ string 类基本用法样例
    Sqlite c/c++ api 学习
    最常见的20种VC++编译错误信息
    C#动态调用C++编写的DLL函数
    C++中将BYTE转16进制字符串
  • 原文地址:https://www.cnblogs.com/guanyuehao0107/p/11856637.html
Copyright © 2011-2022 走看看