java:spring-security的简单例子

【pom.xml】

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>

【/resources/public/login.html】

<!DOCTYPE html>
<html>
    <head>
        <title>Spring Security Example </title>
    </head>
    <body>
        <form action="/security/login2" method="get">
            <div><label> User Name : <input type="text" name="username" value="user"/> </label></div>
            <div><label> Password: <input type="password" name="password" value="123"/> </label></div>
            <div><input type="submit" value="Sign In"/></div>
        </form>
    </body>
</html>

【SecurityConfig.java】

package com.chz.mySpringSecurity.config;

import com.chz.mySpringSecurity.filter.AccessTokenFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
   
   
    @Autowired
    private AccessTokenFilter accessTokenFilter;

    @Override
    protected void configure(HttpSecurity http) throws Exception
    {
   
   
        http.authorizeRequests()
                //访问"/"和"/home"路径的请求都允许
                .antMatchers(
                        "/",            // 这个会跳转到主页,要放过
                        "/home",           // 这是主页的地址,要放过
                        "/security/login2"          // 这个是提交登录的地址,要放过
                )
                .permitAll()
                //而其他的请求都需要认证
                .anyRequest()
                .authenticated()
                .and()
                //修改Spring Security默认的登陆界面
                .formLogin()
                .loginPage("/security/login")       // 登录地址是【/security/login】
                .permitAll()
                .and()
       
<think>我们正在解决Maven构建失败的问题,错误信息是:Non-resolvable parent POM for cyber-login-web:0.0.1-SNAPSHOT: Could not resolve org.springframework.boot:spring-boot-starter-parent:pom:2.7.9.RELEASE 根据引用[1][2][3]中的类似问题,我们可以总结出以下常见原因和解决方法: 可能的原因: 1. Maven仓库中确实没有这个版本的依赖(2.7.9.RELEASE),或者该版本还未同步到你所使用的镜像仓库。 2. 网络问题导致无法从远程仓库下载。 3. 本地仓库的索引问题,或者缓存了错误的元数据。 4. 仓库的SSL证书问题(如引用[3]中提到的证书问题)。 5. 在pom.xml中指定的父POM的版本号写错,或者该版本不存在。 解决方法: 1. 检查Spring Boot官方是否发布了2.7.9.RELEASE版本。我们可以到Maven中央仓库(https://search.maven.org/)或Spring Boot的仓库(https://repo.spring.io/webapp/#/artifacts/browse/tree/General/release/org/springframework/boot/spring-boot-starter-parent)查看。 2. 检查你的pom.xml中parent的版本号是否正确。注意:Spring Boot的版本号通常为x.x.x.RELEASE,但有时也可能写错。 3. 检查Maven的settings.xml文件中配置的镜像仓库(如阿里云镜像)是否可用,并且是否包含该版本。可以尝试更换镜像或直接使用中央仓库。 4. 如果存在证书问题(如引用[3]),可以尝试更新JDK的信任证书,或者暂时忽略SSL检查(不推荐)。 5. 强制Maven更新远程仓库的索引:在命令中加入-U参数,例如:`mvn clean install -U` 6. 如果确定仓库中有该版本,但无法下载,可以尝试删除本地仓库中对应的目录(org/springframework/boot/spring-boot-starter-parent/2.7.9.RELEASE),然后重新构建。 根据引用[1]中的例子,他们通过修改版本号解决了问题。因此,我们也可以尝试将版本号改为一个已知存在的版本,比如2.7.8.RELEASE(如果2.7.9.RELEASE确实不存在)或者2.7.10.RELEASE(如果存在)。 步骤: 1. 确认Spring Boot 2.7.9.RELEASE是否存在。 访问:https://search.maven.org/artifact/org.springframework.boot/spring-boot-starter-parent/2.7.9.RELEASE/pom 或者:https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.7.9.RELEASE/ 2. 如果不存在,则修改pom.xml中的parent版本为一个存在的版本,例如2.7.8.RELEASE或2.7.10.RELEASE(注意:2.7.9.RELEASE可能不存在,因为Spring Boot的版本发布记录中,2.7.x系列的最新版本是2.7.18,但2.7.9也是存在的,具体以仓库为准)。 3. 如果存在,则检查网络和仓库配置: - 确保网络可以访问中央仓库或镜像仓库。 - 检查Maven的settings.xml中是否配置了正确的镜像(如阿里云镜像)。 - 尝试使用命令`mvn dependency:resolve -U`强制更新。 4. 如果遇到SSL证书问题,可以尝试将仓库地址改为http(不推荐,因为很多仓库已经不支持http)或者按照引用[3]中的方法解决证书问题(将仓库的证书导入到JDK的信任库中)。 5. 如果以上步骤无法解决,可以尝试在pom.xml中显式指定父POM的相对路径(如果父POM在本地项目中),但这种情况通常用于多模块项目,且父POM不在远程仓库中。不过,根据错误信息,我们的父POM是在远程仓库中的,所以一般不需要设置relativePath。但有时可以尝试设置relativePath为空,让Maven不从本地路径查找: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.9.RELEASE</version> <relativePath/> <!-- 显式指定为空,表示不从本地路径查找 --> </parent> ``` 6. 如果问题仍然存在,尝试清理本地仓库并重新下载。 注意:根据错误信息,我们这里使用的是`org.springframework.boot:spring-boot-starter-parent:pom:2.7.9.RELEASE`,这个版本在中央仓库是存在的(写于2024年3月之前的版本,但实际存在),所以可能是网络或配置问题。 因此,我们首先建议: 1. 检查网络连接,确保可以访问Maven中央仓库。 2. 检查Maven的settings.xml中是否配置了镜像,比如阿里云镜像。配置示例(在settings.xml的mirrors部分): ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 3. 尝试在命令行运行:`mvn clean install -U` 如果配置了阿里云镜像,但阿里云镜像还没有同步这个版本(虽然可能性不大,因为2.7.9.RELEASE已经发布一段时间了),可以暂时去掉镜像,使用中央仓库。 如果以上方法都无效,则考虑修改版本号。 总结步骤: 1. 确认版本存在(通过浏览器访问Maven仓库)。 2. 检查网络和Maven配置(settings.xml中的镜像)。 3. 使用-U强制更新。 4. 修改版本号(如果确认不存在或无法下载)。 5. 处理SSL证书问题(如果有)。 请按照上述步骤尝试解决。</think>### Maven构建失败:无法解析Spring Boot父POM问题解决 当出现`Non-resolvable parent POM for cyber-login-web:0.0.1-SNAPSHOT: Could not resolve org.springframework.boot:spring-boot-starter-parent:pom:2.7.9.RELEASE`错误时,可按以下步骤解决: #### 1. **验证版本号有效性** - 访问[Maven中央仓库](https://search.maven.org/artifact/org.springframework.boot/spring-boot-starter-parent)确认`2.7.9.RELEASE`是否存在 - 若不存在(实际最新为`2.7.18`),修改pom.xml: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!-- 修正为有效版本 --> <version>2.7.18</version> </parent> ``` #### 2. **配置镜像仓库** 在`settings.xml`中添加阿里云镜像(解决下载超时问题): ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` [^1] #### 3. **强制更新依赖** 执行命令强制刷新本地仓库: ```bash mvn clean install -U ``` 参数说明: - `-U`:强制检查远程仓库更新 #### 4. **处理SSL证书问题** 若报`PKIX path building failed`(常见于JDK 8): ```bash keytool -importcert -alias alimaven -file alimaven.cer -keystore $JAVA_HOME/jre/lib/security/cacerts ``` 从浏览器导出`https://maven.aliyun.com`的证书[^3] #### 5. **检查本地仓库状态** - 删除损坏的依赖: ```bash rm -rf ~/.m2/repository/org/springframework/boot/spring-boot-starter-parent/2.7.9.RELEASE ``` - 检查磁盘空间:`df -h` #### 6. **多模块项目特殊处理** 若为多模块项目,在父pom中添加: ```xml <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>https://repo.spring.io/release</url> </pluginRepository> </pluginRepositories> ``` > **验证修复**:执行`mvn dependency:tree | grep "spring-boot"`确认依赖解析成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A圳技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值