SpringSecurity入门(基于SpringSecurityxml配置文件)

更新时间:2023-06-25 18:14:53 阅读: 评论:0

SpringSecurity⼊门(基于SpringSecurityxml配置⽂件)学习项⽬中⽤到了Spring Security进⾏权限管理,⽐较好⽤,使⽤到的⽅式是基于xml配置⽂件的,相⽐较java代码配置简洁很多,故作笔记整理共享
⾸先贴上全部spring curity配置⽂件代码,还是⼀样,因为我这个是maven项⽬,所以需要提前在pom⽂件⾥写好依赖,以下pom⽂件内容仅供参考
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
<spring.curity.version>5.0.1.RELEASE</spring.curity.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<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>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.curity</groupId>
<artifactId>spring-curity-web</artifactId>
<version>${spring.curity.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.curity</groupId>
<artifactId>spring-curity-config</artifactId>
招待费<version>${spring.curity.version}</version>
</dependency>
<dependency>
<groupId>javax.rvlet</groupId>
<artifactId>javax.rvlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
医院清洁工职责
</dependencies>
<build>
音布
<plugins>
<!-- java编译插件 -->
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>at.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
蒲松龄电视剧<configuration>
<!-- 指定端⼝ -->
<port>8080</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
依赖写好了,包都导好了后,接下来就是要打开l⽂件进⾏相关配置了
⾸先我们应当在<context-param>下配置加载类路径的配置⽂件,和记载Spring配置⽂件是⼀样的
写好这个以后我们就应当写⼀个过滤器,名字为springSecurityFilterChain,名字切记不可写错,因为Spring-Security底层其实就是将springSecurityFilterChain交给springIOC容器来进⾏管理。
/*代表所有的都要经过该安全框架认证。
接下来就是该安全框架的具体xml配置⽂件了。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="www.springframework/schema/beans"
xmlns:curity="www.springframework/schema/curity"
xmlns:xsi="www.w3/2001/XMLSchema-instance"
xsi:schemaLocation="www.springframework/schema/beans
www.springframework/schema/beans/spring-beans.xsd
www.springframework/schema/curity
www.springframework/schema/curity/spring-curity.xsd">
<!-- 配置不拦截的资源 -->
<curity:http pattern="/login.jsp" curity="none"/>
<curity:http pattern="/failer.jsp" curity="none"/>
<curity:http pattern="/css/**" curity="none"/>
<curity:http pattern="/img/**" curity="none"/>
<curity:http pattern="/plugins/**" curity="none"/>
<!--
配置具体的规则
auto-config="true" 不⽤⾃⼰编写登录的页⾯,框架提供默认登录页⾯
u-expressions="fal" 是否使⽤SPEL表达式(没学习过)
-->
<curity:http auto-config="true" u-expressions="fal">
<!-- 配置具体的拦截的规则 pattern="请求路径的规则" access="访问系统的⼈,必须有ROLE_USER的⾓⾊" -->        <curity:intercept-url pattern="/**" access="ROLE_USER"/>
<!-- 定义跳转的具体的页⾯ -->
<curity:form-login
login-page="/login.jsp"
login-processing-url="/login.do"
default-target-url="/index.jsp"
authentication-failure-url="/failer.jsp"
authentication-success-forward-url="/pages/main.jsp"
/>
<!-- 关闭跨域请求 -->
<curity:csrf disabled="true"/>
<!-- 退出 -->
<curity:logout invalidate-ssion="true" logout-url="/logout.do" logout-success-url="/login.jsp" />
</curity:http>
<!-- 切换成数据库中的⽤户名和密码 -->
<curity:authentication-manager>
<curity:authentication-provider ur-rvice-ref="urService">
<!--
<curity:password-encoder ref="passwordEncoder"/>
-
->
</curity:authentication-provider>
</curity:authentication-manager>
<!-- 配置加密类 -->
<bean id="passwordEncoder" class="org.pto.bcrypt.BCryptPasswordEncoder"/>
<!-- 提供了⼊门的⽅式,在内存中存⼊⽤户名和密码
<curity:authentication-manager>
<curity:authentication-provider>
<curity:ur-rvice>
<curity:ur name="admin" password="{noop}admin" authorities="ROLE_USER"/>争做新时代好少年作文
</curity:ur-rvice>
</curity:authentication-provider>
</curity:authentication-manager>
-->
<curity:global-method-curity cured-annotations="enabled"/>
</beans>
这个⽂件是我⾃⼰后⾯进⾏了修改的,⼊门的话Spring curity框架会提供⼀个默认的登录窗⼝,丑的要死,此处就直接跳过那个部分了,直接使⽤⾃⼰的页⾯。
⾸先我们使⽤了<curity:http pattern/>配置不拦截的静态资源。
<curity:intercept-url pattern="/**" access="ROLE_USER" />该配置代表所有路径都要ROLE_USER权限,不要丢了前⾯的
ROLE_,这个⾮常重要
这个便是⾃定义的相关页⾯,相关属性见名知意,不作过多解释
接下来便是⽤户账号密码相关
该配置代表了使⽤配置⽂件⾥的账户名和密码,此处配置了⼀个⽤户名为admin,⽤户密码为admin,具有⾓⾊ROLE_USER,关于中间的{noop},代表了加密⽅式,noop代表不加密,使⽤明⽂密码,这新年大吉
样我们在登录的时候便可以直接使⽤admin这个密码了,⾄于{noop}详细的⼀些内容后续再说,此处先⼊门再说。
在实际开发中我们当然是需要根据数据库的账户密码来进⾏验证登录,以下为数据库登录的配置,被注释掉的部分是加密⽅式,此处先不使⽤这种⽅式,具体加密⽅式我们在java代码中来使⽤。
宝宝积食快速解决方法配置⽂件写完后我们该使⽤java代码来进⾏登录逻辑的编写了,⽽在这些开始之前,我们需要了解⼀个接⼝,UrDetails.
该接⼝的作⽤是⽤来封装当前认证的⽤户信息,因为是⼀个接⼝所以我们需要实现该接⼝,我们也可以使⽤SpringSecurity框架提供的UrDetails的实现类Ur来完成相关操作,以下是Ur的部分代码。
public class Ur implements UrDetails, CredentialsContainer {
private String password;
private final String urname;
private final Set<GrantedAuthority> authorities;
private final boolean accountNonExpired; //帐户是否过期
private final boolean accountNonLocked; //帐户是否锁定
private final boolean credentialsNonExpired; //认证是否过期
private final boolean enabled; //帐户是否可⽤
⽽我们则需要使⽤UrDetailsService这个接⼝来进⾏登录验证操作,我们点开源码会发现UrDetailsService接⼝只有⼀个⽅
法,loadUrByUrname,该⽅法最终会返回⼀个UrDetails,⽽我们则需要实现这个接⼝,并封装UrDetails所需要的相关参数,最后返回该对象即可。
我们回归到Spring-Security框架配置⽂件内,因为我这⾥的登录操作是在rvice层中的urService⾥,所以我这⾥直接使⽤⾃定义的登录验证。
实现接⼝后然后重写loadUrByUrname的⽅法,返回⼀个UrDetails。
⽽在该类⾥⾸先要做的就是根据传过来的urname参数,去数据库中查询出来相关信息,并封装到实体类中,我这⾥是⼀个叫UrInfo的实体类,dao层的数据库查询操作这⾥就不写了,很简单。英文邀请函
然后再将数据库中查询出来并封装好的UrInfo,封装到Ur类中,此Ur类是SpringSeciruty框架的那个,上⾯有作说明,我这⾥先贴上源码,具体功能对照上图可以看出来,如下图所⽰。

本文发布于:2023-06-25 18:14:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1038047.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:配置   相关   登录   数据库   需要
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图