Spring Security教程(2)----SpringSecurity简单测试

前面讲到了SpringSecurity的简单配置,今天做一个简单的测试,先看配置文件

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:sec="http://www.springframework.org/schema/security"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  7.         http://www.springframework.org/schema/security  
  8.         http://www.springframework.org/schema/security/spring-security-3.1.xsd">  
  9.   
  10.     <!-- 配置不过滤的资源(静态资源及登录相关) -->  
  11.     <sec:http pattern="/**/*.css" security="none"></sec:http>  
  12.     <sec:http pattern="/**/*.jpg" security="none"></sec:http>  
  13.     <sec:http pattern="/**/*.jpeg" security="none"></sec:http>  
  14.     <sec:http pattern="/**/*.gif" security="none"></sec:http>  
  15.     <sec:http pattern="/**/*.png" security="none"></sec:http>  
  16.     <sec:http pattern="/js/*.js" security="none"></sec:http>  
  17.       
  18.     <sec:http pattern="/login.jsp" security="none"></sec:http>  
  19.     <sec:http pattern="/getCode" security="none" /><!-- 不过滤验证码 -->  
  20.     <sec:http pattern="/test/**" security="none"></sec:http><!-- 不过滤测试内容 -->  
  21.       
  22.     <sec:http auto-config="true">  
  23.           
  24.         <sec:intercept-url pattern="/app.jsp" access="ROLE_SERVICE"/>  
  25.         <sec:intercept-url pattern="/**" access="ROLE_ADMIN"/>  
  26.               
  27.     </sec:http>  
  28.       
  29.     <sec:authentication-manager>  
  30.         <sec:authentication-provider>  
  31.             <sec:user-service >  
  32.                 <sec:user name="admin" password="admin" authorities="ROLE_ADMIN"/>  
  33.             </sec:user-service>  
  34.         </sec:authentication-provider>  
  35.     </sec:authentication-manager>  
  36.       
  37. </beans>  

其中

<sec:http pattern="" security="none"></sec:http>

是忽略拦截某些资源的意思,主要是针对静态资源

<sec:intercept-url pattern="/app.jsp" access="ROLE_SERVICE"/>

表示访问app.jsp时,需要ROLE_SERVICE权限

<sec:intercept-url pattern="/**" access="ROLE_ADMIN"/>

表示访问任何资源都需要ROLE_ADMIN权限。

注:/**的配置要放到最后,因为如果放到最前面的话就失去了拦截意义,任何只要有ROLE_ADMIN权限的用户都可以访问任何资源,并不会对app.jsp拦截。因为在访问app.jsp的时候先经过<sec:intercept-url pattern="/**" access="ROLE_ADMIN"/>,、/**又表示任何资源,所以只要具有ROLE_ADMIN权限就会放行。如果放到最后,先经过<sec:intercept-url pattern="/app.jsp" access="ROLE_SERVICE"/>,这时候访问app.jsp是就会先判断用户是否有ROLE_SERVICE权限,如果有则放行,反之拦截。

权限必须已ROLE_开头,在后面的文章中我们会讲到如何修改权限头和去掉权限头

authentication-manager用来配置用户管理,在这里我们定义了一个admin用户并且具有ROLE_ADMIN权限,也就是说我们访问任何资源都可以但是访问app.jsp时将被拦截

在没有自定义登录页面之前,SpringSecurity会自动生成登录页面,如下图




然后输入admin/admin登录


然后访问app.jsp发现已被spring拦截,说明我们的配置成功了



符:在JSP页面获取当前登录的用户名的方法

首先引入taglib

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>   
然后在jsp页面中使用下面的方法就可以获取到用户名了

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <sec:authentication property="name"/>  

在此仅仅是为了方便测试所以只说下获取用户名的方法,如何获取用户的其他信息将在后续的章节中讲到
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 是一个开源的安全框架,用于保护基于Spring框架构建的应用程序。MyBatis-Plus 是基于 MyBatis 的增强工具,用于简化 MyBatis 操作和提高开发效率。 将 Spring Security 与 MyBatis-Plus 整合主要包括以下几个步骤: 1. 首先,在 Spring Boot 项目的 pom.xml 文件中添加 Spring Security 和 MyBatis-Plus 的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>latest version</version> </dependency> ``` 2. 接下来,在项目的配置文件 application.properties 或 application.yml 中配置数据库连接和 MyBatis-Plus 的相关配置。 3. 创建一个用户实体类和对应的 Mapper 接口,使用 MyBatis-Plus 提供的注解和方法完成数据访问操作。 4. 创建一个自定义的 UserDetailsService 实现类,用于从数据库中获取用户信息,实现 loadUserByUsername 方法。 5. 创建一个自定义的 PasswordEncoder 实现类,用于加密和校验用户密码。 6. 配置 Spring Security,创建一个继承自 WebSecurityConfigurerAdapter 的类,并重写 configure 方法,设置用户认证规则、登录配置和访问控制规则。 7. 在 Spring Boot 启动类上使用 @MapperScan 注解,扫描 Mapper 接口。 通过以上步骤,就可以实现 Spring Security 与 MyBatis-Plus 的整合。在实际应用中,还可以根据具体需求进行一些其他配置和扩展,例如添加角色权限控制、自定义登录页面和处理逻辑等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值