spring security代码实现
时间: 2023-10-10 16:04:27 浏览: 138
Spring Security是一个基于Spring框架的安全框架,它提供了一系列的API和工具来保护Web应用程序。Spring Security可以实现身份认证、授权、会话管理、密码加密等安全功能。
下面将介绍Spring Security的代码实现。
1. 添加Spring Security依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
```
2. 配置Spring Security
在Spring的配置文件中添加以下配置:
```
<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/admin/**" access="hasRole('ADMIN')" />
<security:form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/login?error" />
<security:logout logout-success-url="/login?logout" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" password="admin" authorities="ROLE_ADMIN" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
```
上述配置中,定义了三个URL的访问规则:/admin/**需要管理员权限才能访问,/login是登录页面,/welcome是登录成功后的默认页面。同时,定义了一个管理员用户admin,密码为admin,拥有ROLE_ADMIN权限。
3. 实现登录页面
在登录页面中,需要添加一个表单,用于用户输入用户名和密码。表单的action属性应该指向Spring Security提供的登录URL:/j_spring_security_check。同时,需要在表单中添加一个隐藏的字段:_csrf,用于防止跨站请求攻击。
```
<form action="/j_spring_security_check" method="post">
<input type="text" name="j_username" placeholder="Username" />
<input type="password" name="j_password" placeholder="Password" />
<input type="hidden" name="_csrf" value="${_csrf.token}" />
<button type="submit">Sign in</button>
</form>
```
4. 实现安全注解
在需要保护的方法上添加@PreAuthorize注解,指定需要的权限。
```
@PreAuthorize("hasRole('ADMIN')")
public void adminMethod() {
// ...
}
```
上述代码中,adminMethod()方法需要ADMIN权限才能被调用。
5. 实现自定义登录页面
如果需要自定义登录页面,可以实现WebSecurityConfigurerAdapter类,并覆盖configure(HttpSecurity http)方法。
```
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/welcome")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.permitAll();
}
}
```
上述代码中,配置了/login和/welcome两个URL的访问规则,以及自定义的登录页面。同时,配置了/logout URL的访问规则。
到此,Spring Security的代码实现就完成了。
阅读全文