环境搭建SpringSecurity

一、maven依赖

<!-- Spring dependencies -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version>
</dependency>
<!-- Spring Security -->
<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><!-- jstl for jsp page -->
<dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servlet.version}</version><scope>provided</scope>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.5</version>
</dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.4</version>
</dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version>
</dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.7</version>
</dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.41</version>
</dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>

二、web.xml配置

<!-- SpringSecurity过滤器链  -->
<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><!-- 启动Spring  -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xmlclasspath:spring-security.xml</param-value>
</context-param><!--启动SpringMVC-->
<servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!-- 服务器启动加载Servlet--><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

三、applicationContext.xml

<!---读取jdbc.properties -->
<context:property-placeholder location="classpath:jdbc.properties"/><!-- 连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="${jdbc.url}"/><property name="driverClassName" value="${jdbc.driverClass}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="maxActive" value="10"/><property name="maxWait" value="3000"/>
</bean><!-- mybatis整合Spring -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--别名扫描 --><property name="typeAliasesPackage" value="cn.sm1234.domain"/>
</bean><!--Mapper接口扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.sm1234.mapper"/>
</bean><!-- 事务配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven/><context:component-scan base-package="cn.sm1234.service"/>

四、spring-security.xml配置

<security:http><!-- 拦截资源 --><security:intercept-url pattern="/product/list" access="hasAuthority('ROLE_LIST_PRODUCT')"/><security:intercept-url pattern="/product/add" access="hasAuthority('ROLE_ADD_PRODUCT')"/><security:intercept-url pattern="/product/update" access="hasAuthority('ROLE_UPDATE_PRODUCT')"/><security:intercept-url pattern="/product/delete" access="hasAuthority('ROLE_DELETE_PRODUCT')"/><security:intercept-url pattern="/userLogin" access="permitAll()"/><security:intercept-url pattern="/js/**" access="permitAll()"/><security:intercept-url pattern="/imageCode*" access="permitAll()"/><security:intercept-url pattern="/product/index" access="permitAll()"/><security:intercept-url pattern="/**" access="isFullyAuthenticated()"/><!-- 自定义Spring Security过滤器 --><security:custom-filter ref="imageCodeAuthenticationFilter" before="FORM_LOGIN_FILTER"/><security:form-login login-page="/userLogin" authentication-success-handler-ref="myAuthenticationnSuccessHandler" authentication-failure-handler-ref="myAuthenticationFailureHandler"/><!-- 权限不足处理 --><security:access-denied-handler error-page="/error"/><security:csrf disabled="true"/><!-- 加上rememberMe功能 --><!-- token-validity-seconds: 有效秒数 --><security:remember-me token-repository-ref="jdbcTokenRepository" token-validity-seconds="3600"/>
</security:http><security:authentication-manager><security:authentication-provider user-service-ref="myUserDetailSerivce"><!--使用加密算法对用户输入的密码进入加密,然后和数据库的密码进行配对 --><security:password-encoder ref="passwordEncoder"/></security:authentication-provider>
</security:authentication-manager><bean id="myUserDetailSerivce" class="cn.sm1234.security.MyUserDetailService"/><bean id="myAuthenticationnSuccessHandler" class="cn.sm1234.security.MyAuthenticationnSuccessHandler"/>
<bean id="myAuthenticationFailureHandler" class="cn.sm1234.security.MyAuthenticationFailureHandler"/><bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/><bean id="imageCodeAuthenticationFilter" class="cn.sm1234.security.ImageCodeAuthenticationFilter"><property name="authenticationFailureHandler" ref="myAuthenticationFailureHandler"/>
</bean><bean id="jdbcTokenRepository" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl"><property name="dataSource" ref="dataSource"/><!-- <property name="createTableOnStartup" value="true"/>-->
</bean>

五、springmvc.xml配置

<!-- 扫描Controller类-->
<contenxt:component-scan base-package="cn.sm1234"/><!--处理静态资源 -->
<mvc:default-servlet-handler/><!--注解方式处理器映射器和处理器适配器 -->
<mvc:annotation-driven></mvc:annotation-driven><!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--前缀 --><property name="prefix" value="/WEB-INF/jsp/"/><!-- 后缀--><property name="suffix" value=".jsp"/>
</bean>

六、jdbc.properties配置

jdbc.url = jdbc:mysql://localhost:3306/security
jdbc.driverClass = com.mysql.jdbc.Driver
jdbc.username = root
jdbc.password = root

七、log4j.properties配置

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=debug, stdout

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-自媒体文章发布-黑马头条

自媒体文章发布 1)自媒体前后端搭建 1.1)后台搭建 ①&#xff1a;资料中找到heima-leadnews-wemedia.zip解压 拷贝到heima-leadnews-service工程下&#xff0c;并指定子模块 执行leadnews-wemedia.sql脚本 添加对应的nacos配置 spring:datasource:driver-class-name: com…

代码随想录算法训练营Day58 | 739.每日温度、496.下一个更大元素 I

单调栈基础 什么时候使用单调栈&#xff1a;通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时我们就要想到可以用单调栈了 单调栈的作用&#xff1a;使用栈来记录已经遍历过的元素 使用单调栈前需要明确两点&…

图解Diffusion扩散模型+代码

0、项目视频详解 视频教程见B站https://www.bilibili.com/video/BV1e8411a7mz 1、diffusion模型理论&#xff08;推导出损失函数&#xff09; 1.1、背景 随着人工智能在图像生成&#xff0c;文本生成以及多模态生成等领域的技术不断累积&#xff0c;如&#xff1a;生成对抗网…

SD-WAN技术如何保障网络的持续连接和稳定性

在当今数字化时代&#xff0c;企业对于网络的稳定性和持续连接性需求日益增加。SD-WAN作为一种新兴的网络解决方案&#xff0c;为企业提供了有效的方式来实现网络的持续连接和稳定性。本文将探讨SD-WAN技术如何保障网络的持续连接和稳定性。 1、多路径冗余技术 SD-WAN采用了多…

window.postMessage学习(问答式)

demo在文章末尾。 window.postMessage 1、有什么用&#xff1f; 答&#xff1a;可以安全地实现跨源通信。通常&#xff0c;对于两个不同页面的脚本&#xff0c;只有当执行它们的页面同源时&#xff0c;这两个脚本才能相互通信。 window.postMessage() 方法提供了一种受控机…

初识Python语言-课堂练习【pyhton123题库】

初识Python语言-课堂练习【pyhton123题库】 一、单项选择题 1、Guido van Rossum正式对外发布Python版本的年份是&#xff1a; A 2008B 1998C 1991D 2002 【答案】C 【解析】暂无解析2、下面不是Python语言特点的是&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪…

移动端App、小程序、公众号该怎么选择,你真得知道吗?

当下移动App,小程序泛滥&#xff0c;如何选择&#xff0c;你真的知道吗&#xff1f; 今天我们就聊聊App、小程序、公众号、微应用具体是什么&#xff1f;怎么样开发&#xff1f;适合在什么情况下使用&#xff1f; 1.App、小程序、公众号、微应用之初识 App App本质来说就是手…

机试:蛇形矩阵

问题描述: 代码示例: //蛇形矩阵 #include <bits/stdc.h> using namespace std;int main(){int n;cout << "输入样例" << endl; cin >> n;int k 1; for(int i 0; i < n; i){if( i %2 0){//单数行for(int j 0; j < n; j){ cout &…

native关键字的理解

native关键字的理解 使用native关键字说明这个方法是原生函数&#xff0c;也就是这个方法是用C/C等非Java语言实现的&#xff0c;并且被编译成了DLL&#xff0c;由Java去调用。 本地方法是有方法体的&#xff0c;用c语言编写。由于本地方法的方法体源码没有对我们开源&#xf…

7. Linux进程环境

进程是操作系统运行程序的一个实例,也是操作系统分配资源的单位。在Linux环境中,每个进程都有独立的进程空间,以便对不同的进程进行隔离,使之不会互相影响。深入理解Linux下的进程环境, 可以帮助我们写出更健壮的代码。 在 Linux 中,进程是程序的一次执行过程,它包含了程…

日常学习2024.03.12-js中的weakSet

日常学习2024.03.12-js中的weakSet 1.WeakSet是什么&#xff1f;2.WeakSet 使用弱引用&#xff0c;Set使用强引用 1.WeakSet是什么&#xff1f; weakSet是什么呢&#xff1f;刚开始自己确实也没什么印象&#xff0c;终结学习一下吧。 WeakSet 是可被垃圾回收的值的集合&#x…

安装包逆向1

1.找到程序的入口点 在IDA中我们看到函数非常多&#xff0c;但是一般都是有主要的入口的&#xff0c;所以找一下有没有主函数 可以直接 CtrF直接查找 CNsInstaller::CNsInstaller 这里搞半天在获取文件路径 CNsInstaller::StartInstall CNsInstaller::InstallFunc char…

springboot268码头船只货柜管理系统

码头船只出行和货柜管理系统的设计与实现 摘要 针对于码头船只货柜信息管理方面的不规范&#xff0c;容错率低&#xff0c;管理人员处理数据费工费时&#xff0c;采用新开发的码头船只货柜管理系统可以从根源上规范整个数据处理流程。 码头船只货柜管理系统能够实现货柜管理…

我和我的DBA之路

这几天&#xff0c;突然想写写这些年的工作总结&#xff0c;毕业至今快20年的回顾。 想到20年前&#xff0c;在做毕业设计的时候&#xff0c;当时是学的机械工程类专业&#xff0c;因为带毕业设计的老师兼职企业有个门户网站的需求&#xff0c;而我又会用DreamWeaver做点网站设…

你的 Python 为什么需要解释一下?

Python 是一种相对简单的编程语言&#xff1b;它主要以解释型语言著称&#xff0c;这意味着每行代码都要通过解释器逐行执行。不过在某些时候&#xff0c;将 Python 代码翻译成计算机可以理解的内容&#xff0c;然后再逐行执行&#xff0c;可以减少繁琐。 在这种情况下&#x…

Spring 面试题及答案整理,最新面试题

Spring框架中的Bean生命周期是什么&#xff1f; Spring框架中的Bean生命周期包含以下关键步骤&#xff1a; 1、实例化Bean&#xff1a; 首先创建Bean的实例。 2、设置属性值&#xff1a; Spring框架通过反射机制注入属性。 3、调用BeanNameAware的setBeanName()&#xff1a…

某电信公司组织结构优化咨询项目成功案例纪实

——构建前后端组织结构&#xff0c;提升组织运营效率 随着企业的不断发展&#xff0c;行业的竞争也越来越激烈&#xff0c;企业只能不断调整自身的战略才能更好的适应这样的大环境。在战略调整的过程中&#xff0c;企业往往会面临这样的问题&#xff1a;管理层的经营理念各不…

哪些订单预计会亏?一张报表告诉你

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 销售订单一般是企业在销售活动中重要的单据&#xff0c;当我们接到一个客户的订单时&#xff0c;就需要在系统中录入一个销售订…

Java中的Map集合如何根据key值排序?

Java中的Map集合如何根据key值排序&#xff08;HashMap<String,Object>&#xff09;&#xff1f; Map集合的键&#xff08;key&#xff09;默认是按照它们的hashCode排序的&#xff0c;这在有时间不符合业务排序。如果你想要根据Map的key值进行排序&#xff0c;一般以下…

python自动爬取,保存并运行程序。

本文使用创作助手。 第一步&#xff08;可跳过&#xff0c;熟悉一下而已&#xff09;&#xff1a; 要在Python中新建一个文本文档并写入内容&#xff0c;可以使用文件操作功能。以下是一个示例代码&#xff1a; # 新建文本文档并写入内容 with open(output.txt, w, encoding…