java安全框架有哪些 java入门基础知识

前面介绍过,Spring Boot使用JWT来实现令牌验证。事实上,Spring Boot有一个完整的安全认证框架:Spring Security。接下来介绍如何集成安全性实现安全验证。一.安全简介对于一个安全企业来说非常重要,必要的安全认证阻断了企业外部的异常访问,保证了企业内部数据的安全。目前...

前面介绍过,Spring Boot使用JWT来实现令牌验证。事实上,Spring Boot有一个完整的安全认证框架:Spring Security。接下来介绍如何集成安全性实现安全验证。

一.安全简介

对于一个安全企业来说非常重要,必要的安全认证阻断了企业外部的异常访问,保证了企业内部数据的安全。

目前,数据安全问题越来越受到业内公司的重视。数据泄露很大一部分是由非正常的权限访问引起的,因此使用合适的安全框架来保护企业服务的安全是非常迫切的。在Java领域,Spring Security无疑是最好的选择之一。

Spring Security是Spring家族中的安全管理框架,可以为基于Spring的企业应用系统提供声明式的安全访问控制解决方案。它提供了一套可在Spring应用系统中灵活配置的组件,充分利用Spring的IoC、DI、AOP等特性,为应用系统提供声明式安全访问控制功能,减少了企业系统安全控制编写大量重复代码的工作。

第二,Spring Boot对安全的支持

虽然在Spring Boot出现之前,Spring Security已经发展了很多年,但是并没有得到广泛的应用。安全管理领域一直是Shiro的天下。与Shiro相比,将Spring Security集成到项目中比较麻烦,所以Spring Security虽然比Shiro强,但不如Shiro普及。

随着Spring Boot的出现,Spring Boot为Spring Security提供了自动配置方案,可以零配置使用。这让春安焕发了青春。

Spring Boot提供了集成了Spring安全的组件包
Spring-Boot-Starter-Security,方便我们在Spring Boot项目中使用Spring安全进行权限控制。

第三,集成安全性

在Spring Boot项目中集成Spring Boot安全性非常简单,只需在项目中添加Spring Boot安全性的依赖项。以下示例演示了Spring Boot基本安全性的登录验证。

1.添加依赖关系

Spring Boot提供了集成了Spring安全的组件包
Spring-Boot-Starter-Security,方便我们在Spring Boot项目中使用Spring安全。

<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>

除了引入安全组件,我们还添加了Web和百里香组件,因为我们想要验证Web系统的权限。

2.配置登录用户名和密码。

用户名和密码在application.properties中配置..

# securityspring.security.user.name=adminspring.security.user.password=admin

管理员的用户名和密码被添加到application.properties配置文件中。

3.添加控制器

创建一个SecurityController类,并在该类中添加一个页面入口。

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

4.创建前端页面

在资源/模板目录中创建一个页面index.html。该页面是需要权限控制的特定页面。只有登录才能进入这个页面。

<!DOCTYPE html><html xmlns="http://***.w3.org/1999/xhtml" xmlns:th="http://***.thymeleaf.org"><body><h1>Hello</h1><p>我是登录后才可以看的页面</p></body></html>

5.测试验证

配置完成后重启项目,访问地址:http://localhost:8080/,页面会自动弹出一个登录框,如下图所示。

系统自动跳转到Spring Security的默认登录页面,输入之前配置的用户名和密码即可登录系统。登录页面如下图所示。

通过上面的例子,我们可以看到Spring Security自动保护所有访问请求,实现页面权限控制。

四。登录验证

前面已经演示了在Spring Boot项目中集成Spring Security可以实现简单的登录验证功能。在实际项目使用过程中,有些功能页面可能不需要登录验证,而有些功能页面需要登录验证后才能访问。下面完整的示例程序演示了如何实现安全的登录认证。

1.创建页面content.html。

首先创建一个content.html页面。该页面只能由登录用户查看,否则会跳转到登录页面,只有成功登录后才能访问。示例代码如下:

<!DOCTYPE html><html xmlns="http://***.w3.org/1999/xhtml" xmlns:th="http://***.thymeleaf.org"><body><h1>content</h1><p>我是登录后才可以看的页面</p><form method="post" action="/logout"> <button type="submit">退出</button></form></body></html>

在上面的例子中,我们看到退出请求使用post,因为安全退出请求默认只支持post。

2.修改index.html页面

修改之前的index.html页面并添加一个登录按钮。

<p>点击 <a th:href="@{/content}">这里</a>进入管理页面</p>

上例中,索引页属于公共页,没有权限验证。从索引页面进入内容页面时,需要进行登录验证。

3.修改控制器控制器

修改以前的SecurityController控制器并添加内容页的路由地址。示例代码如下:

@RequestMapping("/")public String index() { return "index";} @RequestMapping("/content")public String content() { return "content";}

4.创建SecurityConfig类

创建安全性的配置文件SecurityConfig类,该类继承自
WebSecurityConfigureAdapter,现在可以自定义权限验证配置。示例代码如下:

@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/", "/home").permitAll() .anyRequest().authenticated() .and() .formLogin() .permitAll() .and() .logout() .permitAll() .and() .csrf() .ignoringAntMatchers("/logout"); }}

在上面的示例程序中,可以直接访问SecurityConfig类中配置的index.html,但是content.html只有登录后才能查看,如果没有登录,会自动跳转到登录页面。

@EnableWebSecurity:开启 Spring Security 权限控制和认证功能。antMatchers(“/”, “/home”).permitAll():配置不用登录可以访问的请求。anyRequest().authenticated():表示其他的请求都必须有权限认证。formLogin():定制登录信息。loginPage(“/login”):自定义登录地址,若注释掉,则使用默认登录页面。logout():退出功能,Spring Security自动监控了/logout。ignoringAntMatchers(“/logout”):Spring Security 默认启用了同源请求控制,在这里选择忽略退出请求的同源限制。

5.测试验证

修改后,重启项目。访问地址http://localhost:8080/可以看到索引页面的内容。当你点击链接跳转到内容页面时,你会自动跳转到登录页面。登录成功后会自动跳转到
http://localhost:8080/content。点击内容页面的“退出”按钮,您将退出登录状态,跳转到登录页面,并提示您已经登录。

登录、退出、请求受限页面退出并跳转到登录页面是常见的安全控制案例,也是账号系统的基本安全保障。

本文来自无言温柔天然对象投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/489506.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 04-04
下一篇 04-04

相关推荐

  • 韩顺平php从入门到精通 php从入门到精通教程

    数组基础含义:数组是一系列数据的***,这些数据按照设定的顺序排列成“链状”。注意:php中数组单元的顺序与下标无关!数组定义(赋值):$arr1 = array(3,11,5,18,2);//这是最常见的数组,下标是“默认下标”,是从0开始的整数;$ arr 2 = array(" a " = >3、“bb”= &g

    2023-07-29 01:18:01
    299 0
  • 象棋入门教程从零开始 初学者入门最全教程,一看就懂

    中国象棋作为我国的国粹,已有几千年的历史,深受人民的喜爱。无论在公园、街道、居民区等。,随处可见下棋的人,周围都是看棋的人。看他们互相争论一会儿,指点迷津,真的很有意思。相信很多人也对象棋感兴趣,但是新手应该怎么下棋呢?新手应该怎么下棋?首先,棋盘和棋子1

    2023-07-26 16:56:01
    540 0
  • 微单反相机哪款好(入门微单反相机哪款好)

    随着微单相机逐渐成为影像市场的主导,无论是购买第一台相机的新用户,还是单反相机的老用户,面对市场上种类繁多的微单相机,应该如何选择?今天在这篇文章中,我们就以佳能EOS R系列专用微单相机为例,谈谈新人和老用户如何选择微单相机。目前市场上销售的佳能EOS R系列专用

    2023-07-25 21:47:01
    871 0
  • seo如何入门(seo入门基础教程)

    SEO是什么?什么是SEO?大家口中的SEO(搜索引擎优化)翻译成中文就是“搜索引擎优化”。本质上,就是如何迎合搜索引擎的规则,让网站在搜索结果中排名更靠前,比如某PDA行业网站。当用户输入“PDA数据采集器”时,如果没有SEO,可能这个网站会出现在第2页或第3页之后。通过用户

    2023-07-25 06:42:01
    353 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信