首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Spring Security在app中手动创建第一个用户

Spring Security是一个功能强大的身份验证和访问控制框架,可以帮助开发人员在应用程序中实现安全性。使用Spring Security,可以轻松地在app中手动创建第一个用户。

首先,需要在项目的依赖管理中添加Spring Security的相关依赖。可以在项目的构建工具(如Maven或Gradle)中添加以下依赖:

代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

接下来,需要创建一个配置类来配置Spring Security。可以创建一个类,命名为SecurityConfig,并使用@Configuration和@EnableWebSecurity注解标记该类。在该类中,可以重写configure方法来配置身份验证和访问控制规则。

代码语言:txt
复制
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/admin/**").hasRole("ADMIN")
                .antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .and()
            .logout()
                .logoutSuccessUrl("/")
                .and()
            .csrf().disable();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
                .withUser("admin").password("{noop}password").roles("ADMIN")
                .and()
                .withUser("user").password("{noop}password").roles("USER");
    }
}

在上述配置中,我们定义了两个用户:admin和user。他们的密码分别是password,并分别具有ADMIN和USER角色。我们使用了inMemoryAuthentication来在内存中进行身份验证,这只适用于开发和测试环境。在生产环境中,应该使用其他身份验证机制,如数据库。

现在,我们已经配置好了Spring Security。当app启动时,可以使用admin或user作为用户名,以及password作为密码进行身份验证。

这是一个使用Spring Security在app中手动创建第一个用户的示例。当然,Spring Security还提供了更多的功能和配置选项,可以根据具体需求进行进一步的定制和扩展。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Security Spring Boot 使用【集中式】

1.1.2 引入 Spring Security    Spring Boot 引入 Spring Security 是相当简单的,可以在用脚手架创建项目的时候勾选,也可以创建完毕后 pom 文件中加入相关依赖...Spring Boot 帮我们完成了 Spring 需要完成的诸多配置【☞ Spring Security 基础入门】。...也正是因为 Spring Boot 提供了自动化配置方案,让我们可以“零配置”的使用 Spring Security,所以 Spring Boot 项目中我们通常使用的安全框架是 Spring Security...1.2 配置认证 1.2.1 添加静态用户   Spring Boot 除了一些信息写道 yml 配置文件,其他配置都使用配置类,Spring Security 需要继承 WebSecurityConfigurerAdapter...  Spring Security使用用户是 UserDetails,我们要么让自定义用户类实现 UserDetails,要么使用时将自定义用户类转换为 UserDetails。

2.5K41

Spring Security 5如何使用默认的Password Encoder

概览 Spring Security 4,可以使用in-memory认证模式直接将密码以纯文本的形式存储。...Spring Security 5,密码管理机制进行了一次大的修改,默认引入了更安全的加/解密机制。...这意味着,如果您的Spring应用程序使用纯文本的方式存储密码,升级到Spring Security 5后可能会出现问题。 在这个简短的教程,我们将描述其中一个潜在的问题,并演示如何解决。 2....Spring Security 5 我们可以通过使用PasswordEncoderFactories类创建一个DelegatingPasswordEncoder的方式来解决这个问题。...总结 在这个简短的例子,我们使用新的密码存储机制将一个Spring 4下的,使用了in-memory 认证模式的配置升级到了Spring 5。 与往常一样,您可以GitHub上查看源代码。

1.3K10

Spring Security ,我就想从子线程获取用户登录信息,怎么办?

大家知道 Spring Security 想要获取登录用户信息,不能在子线程获取,只能在当前线程获取,其中一个重要的原因就是 SecurityContextHolder 默认将用户信息保存在 ThreadLocal...final String MODE_GLOBAL = "MODE_GLOBAL"; ... ... } 第二种存储策略 MODE_INHERITABLETHREADLOCAL 就支持子线程获取当前登录用户信息...这个问题搞懂了,就理解了为什么 Spring Security ,只要我们稍加配置,就可以子线程获取到当前登录用户信息。...子线程创建的一瞬间,会将父线程 inheritableThreadLocals 变量的值赋值给子线程,一旦子线程创建成功了,如果用户再次去修改了父线程 inheritableThreadLocals...修改完成后,再次启动项目,就可以子线程获取到登录用户数据了,至于原理,就是前面所讲的。

4.5K30

【DB笔试面试400】Oracle使用了如下的语句创建用户LHRLDD,则对于该用户而言,以下说法错误的是()

题目 Oracle使用了如下的语句创建用户LHRLDD,则对于该用户而言,以下说法错误的是() CREATE USER LHRLDD IDENTIFIED BY LHRLDD; A、该用户的口令为...LHRLDD B、LHRLDD的默认表空间为USERS C、LHRLDD的临时表空间为TEMP D、使用UPDATE命令可以修改LHRLDD的口令 A 答案 答案:D。...本题考察创建用户的命令。...创建用户的时候若省略了默认表空间及临时表空间的话,则可以通过查询系统表SYS.PROPS$表来获取默认值,如下所示: SELECT * FROM PROPS$ D WHERE D.NAME IN ('...DEFAULT_TEMP_TABLESPACE', 'DEFAULT_PERMANENT_TABLESPACE'); 更改密码需要使用ALTER USER来更改,选项描述错误,所以,本题的答案为D。

1.3K20

SpringBoot之部署以及Maven打包切换环境

方式二:通过 HTTP 发送 shutdown 信号 该方式主要依赖 Spring Boot Actuator 的 endpoint 特性,具体步骤如下: 2.1 pom.xml 引入 actuator...的响应 2.4 安全设置 可以看出,使用该方法可以非常方便的进行远程操作,但是需要注意的是,正式使用时,必须对该请求进行必要的安全设置,比如借助 spring-boot-starter-security...>spring-boot-starter-security 开启安全验证 application.properties 变更配置,并 #开启shutdown...的安全验证 endpoints.shutdown.sensitive=true #验证用户security.user.name=admin #验证密码 security.user.password...自定义参数 在这种方式下,我们还可以使用自定义的.conf文件来变更默认配置,方法如下: jar包相同路径下创建一个.conf文件,名称应该与.jar的名称相同,如appname.conf 在其中配置相关变量

1K20

【SpringSecurity】简介

◎ Anonymous authentication:允许匿名用户使用特定的身份安全访问资源。 ◎ Run-as authentication:允许一个会话变换用户身份的机制。...创建一个简单的SpringSecurity项目 本节创建一个简单的Spring Security项目,带领大家初步领略Spring Security带来的便利。...如果不通过Spring Initializr添加Spring Security的相关依赖,则手动将依赖信息添加到pom.xml文件也是可以的。...引入Spring Security项目之后,虽然没有进行任何相关的配置或编码,但Spring Security有一个默认的运行状态,要求经过HTTP基本认证后才能访问对应的URL资源,其默认使用用户名为...修改默认账号密码 当然,HTTP基本认证用户名和密码都是可以配置的,最常见的就是resources下的配置文件修改,如下所示。

34340

Spring Security入门【基于配置文件和数据库】

“认证”,是为用户建立一个他所声明的主体。主题一般指用户,设备或可以系统执行动作的其他系统。简单来说,校验账号密码是否正确,就是"认证"的过程。...默认webapp工程没有java和resources目录,创建并分别设置根路径和资源路径 5.src/main/resources下创建spring-security.xml <?...spring-security.xml配置登录页面和跳转页面 <?xml version="1.0" encoding="UTF-8"?...,Spring Security如果想要使用数据进行认证操作,有很多种操作方式,这里我们介绍使用UserDetails、UserDetailsService来完成操作。...,一个角色又对应多个用户,所以用户与角色之间是多对多关系,我们通过user_role中间表来描述其关联,实体类User存在List,Role中有List。

1.8K20

简单看下最近的Spring Secrurity、Spring漏洞(CVE-2024-22234、CVE-2024-22243)

最近的这两个cve我看国内很多情报将其评为高危,所以想着去看看原理,看完发现都比较简单,利用要求的场景也相对有限(特别是第一个),所以就随便看下就行了 Spring Security 用户认证绕过(CVE... Spring Security ,可以使用这个方法来确定用户是否已经进行了完整的身份验证。...正常情况下,如果没有经过认证,返回的页面为: 进入登录页面正常登录后 返回的页面为: 如果开发在某些情况,比如手动清除SecurityContextHolder的Authentication信息或通过异步处理导致异步线程没有可用的信息...url进行访问,因为url存在[ 会让程序报错: 所以更多利用场景我猜可能是使用UriComponentsBuilder取的host重新进行url拼接来进行访问 总结 Spring Security这个漏洞可能对于实战利用不大...,因为黑盒测未授权都能测试出来不需要什么用户可控的绕过姿势,相对而言Spring Framework这个实战对于url可控的地方增加xxx[@yyy.com 可能会有奇效。

2K10

SpringBoot+SpringSecurity处理Ajax登录请求

创建工程 首先我们需要创建一个Spring Boot工程,创建时需要引入Web、Spring Security、MySQL和MyBatis(数据库框架其实随意,我这里使用MyBatis),创建好之后,依赖文件如下...,这里有一个要注意的地方,由于我在数据库存储的角色名都是诸如‘超级管理员’、‘普通用户’之类的,并不是以ROLE_这样的字符开始的,因此需要在这里手动加上ROLE_,切记。...loadUserByUsername方法,首先根据传入的参数(参数就是用户登录时输入的用户名)去查询用户,如果查到的用户为null,可以直接抛一个UsernameNotFoundException异常...successHandler使用response返回登录成功的json即可,切记不可以使用defaultSuccessUrl,defaultSuccessUrl是只登录成功后重定向的页面,使用failureHandler...Security会自动跳转到到login_page页面,但是Ajax请求,不需要这种跳转,我要的只是是否登录的提示,所以这里返回json即可。

88450

SpringBoot+SpringSecurity处理Ajax登录请求

创建工程 首先我们需要创建一个Spring Boot工程,创建时需要引入Web、Spring Security、MySQL和MyBatis(数据库框架其实随意,我这里使用MyBatis),创建好之后,依赖文件如下...,这里有一个要注意的地方,由于我在数据库存储的角色名都是诸如‘超级管理员’、‘普通用户’之类的,并不是以ROLE_这样的字符开始的,因此需要在这里手动加上ROLE_,切记。...loadUserByUsername方法,首先根据传入的参数(参数就是用户登录时输入的用户名)去查询用户,如果查到的用户为null,可以直接抛一个UsernameNotFoundException异常...successHandler使用response返回登录成功的json即可,切记不可以使用defaultSuccessUrl,defaultSuccessUrl是只登录成功后重定向的页面,使用failureHandler...Security会自动跳转到到login_page页面,但是Ajax请求,不需要这种跳转,我要的只是是否登录的提示,所以这里返回json即可。

1.5K50

使用Spring Boot实现用户认证和授权

引言 现代Web应用用户认证和授权是必不可少的功能。它们确保只有经过验证的用户才能访问应用,并根据用户的角色和权限进行相应的操作。...本文将详细探讨如何使用Spring Boot实现用户认证和授权,并提供具体的代码示例和应用案例。...Spring Security通过高度可扩展的安全机制,简化了用户认证和授权的实现。 第三章 项目初始化 使用Spring Initializr生成一个Spring Boot项目,并添加所需依赖。...5.2 使用Docker部署Spring Boot应用 Docker是一个开源的容器化平台,可以帮助开发者将Spring Boot应用打包成容器镜像,并在任何环境运行。...本文详细介绍了用户认证和授权的基础知识、Spring Boot项目的初始化、具体实现以及部署和监控,帮助读者深入理解和掌握Spring Boot在用户认证和授权的应用。

7510

Spring Security技术栈开发企业级认证与授权(四)RESTful API服务异常处理

APP端访问 从APP端访问我们可以使用模拟RESTful API发送器来进行发送,我这里使用的Paw软件,你可以在你的谷歌浏览器上安装Postman来进行发送。...在这里我再写一个Controller,手动抛出异常。...二、自定义服务异常处理 实际的开发过程,如果出现404或者500的错误的时候,返回给浏览器是Spring Boot默认的处理界面,这并不友好,我们可以实现自定义页面来给出更好的温馨提示。...404.html和500.html,访问出现404错误的时候,就会跳转到我们自己定义的HTML,而不是Spring Boot默认的界面。...自定义服务异常处理类 实际的开发,我们完全可以自定义服务异常处理类,以满足实际的开发需求。这里写一个异常类,在业务逻辑处理,可以根据需要手动抛出自己自定义的异常。

78031

一步一步教会你如何使用Java构建单点登录

为您的Java应用程序创建测试用户接下来,您需要创建两个用户第一个用户只能登录第一个应用程序(OIDC App 1),第二个用户可以登录两个应用程序。...开发人员控制台中,单击“ 用户” >“ 人员”,然后单击“ 添加人员”。使用下表填写第一个用户的信息表。也使用下表对第二个用户重复此操作。...此应用程序将仅允许第二个用户Tanya Tester对其进行访问。访问策略标签,添加策略,在这些字段填写这些值,然后点击创建策略。...这表明只有该用户可以登录该OIDC App 2应用程序。点击创建规则。单击设置选项卡,然后复制颁发者URL。您将很快使用此值。Okta完成所有配置工作。上代码!...授权服务器,您创建了两个访问策略,每个客户端应用程序一个。两种访问策略均限制对授权码流的访问。第一个客户端应用程序对任何经过身份验证的用户(通过Okta的单点登录进行身份验证的任何用户)开放。

3.4K30

shiro笔记(一)shiro是什么,他的架构原理是什么,实现流程是什么

相较于Spring Security 来说 Shiro更加老牌,所以就先讲解Shiro,在后面的阶段中讲解Spring Security。...加密),和Session Manager.Shiro具有简单易懂的API,使用Shiro可以快速并且简单的应用到任何应用,无论是从最小的移动app到最大的企业级web应用都可以使用....Spring Boot项目中,获取Security Manager 是编写代码的第一步。而在Spring Boot已经帮助我们自动化配置了。...ssm项目里面,我们使用shiro框架,首先要拿到Security Manager对象,这个对象是自己创建的,但是Springboot项目里面,只要集成了shiro依赖,那么spring容器里面就有Security...Manager对象了,我们直接拿出来就可以使用了,不需要我们手动创建了 4Authenticator 认证器。

93230

Spring Boot 1.0 到Spring Boot 2.0 迁移指南

一个明显的副作用是使用 Spring Security 的内容协商进行授权(表单登录)。 默认用户 默认情况下,Spring Boot 使用生成的密码配置单个用户。...用户可以使用 spring.security.user.* 属性进行配置。要进一步定制用户或添加其他用户,您将不得不公开一个UserDetailsServicebean。...sensitive每个端点的标志也没有安全配置变得更加明确。如果您依赖于此行为,则需要创建或调整您的安全配置,以保护您选择角色的端点。...JPA 和 Spring Data Spring Boot 1.x ,一些用户正在扩展HibernateJpaAutoConfiguration以将高级自定义应用于自动配置EntityManagerFactory...更新默认的’创建 - 删除’处理 spring.jpa.hibernate.ddl-auto 属性默认为只有没有使用 Liquibase 或 Flyway 等模式管理器时才使用嵌入式数据库进行创建

2.4K42

Spring Boot 2.0 迁移指南

一个明显的副作用是使用 Spring Security 的内容协商进行授权(表单登录)。 默认用户 默认情况下,Spring Boot 使用生成的密码配置单个用户。...用户可以使用 spring.security.user.* 属性进行配置。要进一步定制用户或添加其他用户,您将不得不公开一个UserDetailsServicebean。...sensitive每个端点的标志也没有安全配置变得更加明确。如果您依赖于此行为,则需要创建或调整您的安全配置,以保护您选择角色的端点。...JPA 和 Spring Data Spring Boot 1.x ,一些用户正在扩展HibernateJpaAutoConfiguration以将高级自定义应用于自动配置EntityManagerFactory...更新默认的'创建 - 删除'处理 spring.jpa.hibernate.ddl-auto 属性默认为只有没有使用 Liquibase 或 Flyway 等模式管理器时才使用嵌入式数据库进行创建

2K20

【SpringSecurity系列(二十八)】当跨域遇上 Spring Security

这次我把 Spring Boot 的跨域问题分为了三个场景: 普通跨域 Spring Security 跨域 OAuth2 跨域 分为三种并非多此一举,主要是因为这三种场景的配置都不太一样,而这三种场景又都是非常常见的场景... Spring 框架,对于 CORS 也提供了相应的解决方案, Spring Boot ,这一方案得倒了简化,无论是单纯的跨域,还是结合 Spring Security 之后的跨域,都变得非常容易了...2.解决方案 首先创建两个普通的 Spring Boot 项目,这个就不用我多说,第一个命名为 provider 提供服务,第二个命名为 consumer 消费服务,第一个配置端口为 8080,第二个配置配置为...consumer 的 resources/static 目录下创建一个 html 文件,发送一个简单的 ajax 请求,如下: <input type="button...<em>Spring</em> <em>Security</em> <em>中</em> CSRF 防御源码解析 3.SpringSecurity 如果<em>使用</em>了 <em>Spring</em> <em>Security</em>,上面的跨域配置会失效,因为请求被 <em>Spring</em> <em>Security</em>

5.2K40
领券