Spring Boot SpringSecurity5 身份验证

对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现(如:Apache Shiro、Spring Security)。

pom.xml添加依赖

<dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>

<dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-thymeleaf</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-security</artifactId>        </dependency>

创建SpringSecurity配置类

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;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;@Configuration@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override    protected void configure(HttpSecurity http) throws Exception {        http            .authorizeRequests()                .antMatchers("/", "/home").permitAll()                .anyRequest().authenticated()                .and()            .formLogin()                .loginPage("/login")                .permitAll()                .and()            .logout()                .permitAll();    }    @Autowired    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {        auth            .inMemoryAuthentication()                .withUser("admin").password("123456").roles("USER");    }}

通过@EnableWebSecurity注解开启Spring Security的功能
继承WebSecurityConfigurerAdapter,并重写它的方法来设置一些web安全的细节
configure(HttpSecurity http)方法,通过authorizeRequests()定义哪些URL需要被保护、哪些不需要被保护。例如以上代码指定了/和/home不需要任何认证就可以访问,其他的路径都必须通过身份验证。
通过formLogin()定义当需要用户登录时候,转到的登录页面。
configureGlobal(AuthenticationManagerBuilder auth)方法,在内存中创建了一个用户,该用户的名称为admin,密码为123456,用户角色为USER。

控制器:

@Controllerpublic class HelloController {    @RequestMapping("/")    public String index() {        return "index";    }    @RequestMapping("/hello")    public String hello() {        return "hello";    }

@RequestMapping(value = "/login", method = RequestMethod.GET)    public String login() {        return "login";    }

}

index.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><head>    <title>Spring Security入门</title></head><body><h1>欢迎使用Spring Security!</h1>

<p>点击 <a th:href="@{/hello}">这里</a> 打个招呼吧</p></body></html>

hello.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><head>    <title>Hello World!</title></head><body><h1 th:inline="text">Hello [[${#httpServletRequest.remoteUser}]]!</h1><form th:action="@{/logout}" method="post">    <input type="submit" value="注销"/></form></body></html>

login.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"      xmlns:th="http://www.thymeleaf.org"      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><head>    <title>Spring Security Example </title></head><body><div th:if="${param.error}">    用户名或密码错</div><div th:if="${param.logout}">    您已注销成功</div><form th:action="@{/login}" method="post">    <div><label> 用户名 : <input type="text" name="username"/> </label></div>    <div><label> 密 码 : <input type="password" name="password"/> </label></div>    <div><input type="submit" value="登录"/></div></form></body></html>

运行:

打开index.html,点击这里,如果没有登录进入登录页,已登录跳转到hello.html

http://blog.didispace.com/springbootsecurity/

原文地址:https://www.cnblogs.com/jpfss/p/9047453.html

时间: 2024-11-13 14:26:23

Spring Boot SpringSecurity5 身份验证的相关文章

spring boot+jwt 权限验证

上周看了一下jwt以前公司的开发都是使用session共享的方法.现在主流的两种方式一种是把登录信息保存在服务器,另一种则是把信息保存在客户端.在使用session 存储的时候会遇到很多的问题,随着项目越来越多工作量会变得越来越大.现在公司要开始一个新的项目,索性就开始使用jwt,数据保存在客户端每一次请求都回传给服务器验证一下. 本文分为两部分第一部分简单介绍一下JWT,第二部分简单介绍一下使用spring boot+jwt构建一个项目. 一.什么是JWT? JWT全程JSON Web tok

spring boot + shiro 登录验证

form提交 <form th:action="@{/login}" method="POST"> <div class="form-group has-feedback"> <input name="username" type="text" class="form-control" placeholder="用户账户" require

spring boot 表单验证

1 设置某个字段的取值范围 1.1 取值范围验证:@Min,@Max ① 实例类的属性添加注解@Min ② Controller中传入参数使用@Valid注解 1.2 不能为空验证:@NotNull 对pojo类的属性使用@NotNull注解即可 原文地址:https://www.cnblogs.com/Latiny/p/9003402.html

Spring Boot 整合滑动验证

极验是一种利用生物特征与人工智能技术解决人机交互安全问题的技术,旨在解决安全验证问题,例如:账号登录.短信验证.批量注册等,目前极验.网易易盾比较出众. 在这里主要使用的极验Geetest和springboot 框架整合. 1.首先到极验官网注册账号获取ID和KEY,这里赘述. 2.到极验官网下载,使用SDK,点击下载,如果你使用时Git工具, #git clone https://github.com/GeeTeam/gt3-java-sdk.git 3.引入SDK到Springboot项目中

第5章 Spring Boot 功能

Spring Boot 功能 本节将会介绍Spring Boot的一些细节. 在这里,您可以了解您将要使用和自定义的主要功能. 如果还没有准备好,您可能需要阅读第二部分“入门指南”和第三部分“使用 Spring Boot”部分,以使您有基础的良好基础. 23. SpringApplication SpringApplication类提供了一种方便的方法来引导将从main()方法启动的Spring应用程序. 在许多情况下,您只需委派静态SpringApplication.run()方法: publ

Spring Boot + Security + JWT 实现Token验证+多Provider——登录系统

首先呢就是需求: 1.账号.密码进行第一次登录,获得token,之后的每次请求都在请求头里加上这个token就不用带账号.密码或是session了. 2.用户有两种类型,具体表现在数据库中存用户信息时是分开两张表进行存储的. 为什么会分开存两张表呢,这个设计的时候是先设计的表结构,有分开的必要所以就分开存了,也没有想过之后Security 这块需要进行一些修改,但是分开存就分开存吧,Security 这块也不是很复杂. maven就是这两: <dependency> <groupId&g

一个Spring Boot, JWT,AugularJS接口安全验证的简单例子

最近研究REST接口的无状态安全验证,这个文章有一定参考价值,但相当不完善,token只是简单用了服务器回传的, 没有实现数据签名和防篡改,另外git代码也有问题, 我简单修改了,可以看到文章中的效果. 我修改代码的git地址: https://github.com/offbye/jwt-angular-spring 原文地址  http://niels.nu/blog/2015/json-web-tokens.html 28 January 2015 When you create a RES

Spring boot连接3.03以上的mongodb 权限验证问题

由于3.0.3,mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证,所有Spring boot连接MongoDB时会出现用户认证失败. 解决方法: > use admin switched to db admin > var schema = db.system.version.findOne({"_id" : "authSchema"}) > schema.currentVersion = 3 3 > db.sy

spring boot 配置拦截器验证使用 token 登录

1.自定义登录注解 package io.xiongdi.annotation; import java.lang.annotation.*; /** * @author wujiaxing * @date 2019-07-12 * 登录校验 */ @Target(ElementType.METHOD) @Documented @Retention(RetentionPolicy.RUNTIME) public @interface Login { } 2.创建 token 实体类 packag