当前位置:首页 > 网络技术 > java安全框架有哪些(java入门基础知识)(java中常用的安全框架)

java安全框架有哪些(java入门基础知识)(java中常用的安全框架)

longge@20222022-03-24 01:47:59网络技术125

前面介绍了Spring Boot 使用JWT实现Token验证,其实Spring Boot 有完整的安全认证框架:Spring Security。接下来我们介绍如何集成Security 实现安全验证。

一、Security简介

安全对于企业来说至关重要,必要的安全认证为企业阻挡了外部非正常的访问,保证了企业内部数据的安全。

当前,数据安全问题越来越受到行业内公司的重视。数据泄漏很大一部分原因是非正常权限访问导致的,于是使用合适的安全框架保护企业服务的安全变得非常紧迫。在Java领域,Spring Security无疑是最佳选择之一。

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

二、Spring Boot对Security的支持

虽然,在Spring Boot出现之前,Spring Security已经发展多年,但是使用并不广泛。安全管理这个领域一直是Shiro的天下,因为相对于Shiro,在项目中集成Spring Security还是一件麻烦的事情,所以Spring Security虽然比Shiro强大,但是却没有Shiro受欢迎。

随着Spring Boot的出现,Spring Boot 对Spring Security 提供了自动化配置方案,可以零配置使用 Spring Security。这使得Spring Security重新焕发新的活力。

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

三、集成Security

在Spring Boot 项目中集成Spring Boot Security 非常简单,只需在项目中增加Spring Boot Security的依赖即可。下面通过示例演示Spring Boot中基础Security的登录验证。

1. 添加依赖

Spring Boot 提供了集成 Spring Security 的组件包
spring-boot-starter-security,方便我们在 Spring Boot 项目中使用 Spring Security。


    org.springframework.boot
    spring-boot-starter-web


    org.springframework.boot
    spring-boot-starter-thymeleaf


    org.springframework.boot
    spring-boot-starter-security

上面除了引入Security组件外,因为我们要做Web系统的权限验证,所以还添加了Web和Thymeleaf组件。

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

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

# security
spring.security.user.name=admin
spring.security.user.password=admin

在application.properties配置文件中增加了管理员的用户名和密码。

3. 添加Controller

创建SecurityController 类,在类中添加访问页面的入口。

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

4. 创建前端页面

在resources/templates 目录下创建页面 index.html,这个页面就是具体的需要增加权限控制的页面,只有登录了才能进入此页。




Hello

我是登录后才可以看的页面

5. 测试验证

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

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

通过上面的示例,我们看到Spring Security自动给所有访问请求做了登录保护,实现了页面权限控制。

四、登录验证

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

1. 创建页面content.html

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




content

我是登录后才可以看的页面

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

2. 修改index.html 页面

修改之前的index.html页面,增加登录按钮。

点击 这里进入管理页面

在上面的示例中,index页面属于公共页面,无权限验证,从index页面进入content页面时需要登录验证。

3. 修改Controller控制器

修改之前的SecurityController控制器,增加content页面路由地址,示例代码如下:

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

4. 创建 SecurityConfig 类

创建 Security的配置文件SecurityConfig类,它继承于
WebSecurityConfigurerAdapter,现自定义权限验证配置。示例代码如下:

@Configuration
@EnableWebSecurity
public 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/可以看到 index 页面的内容,单击链接跳转到content页面时会自动跳转到登录页面,登录成功后才会自动跳转到
http://localhost:8080/content,在 content 页面单击“退出”按钮,会退出登录状态,跳转到登录页面并提示已经退出。

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

免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。
  • 随机文章
  • 热门文章
  • 热评文章
  • jquery获取一个元素的HTML代码html()或文本值text()(jquery获取html的内容)
  • ABM(四):找对人,营销事半功倍
  • docker查看全部容器命令(docker查看所有容器命令)
  • springboot maven 打包插件介绍及注意事项说明_java
  • Java利用FileUtils读取数据和写入数据到文件_java(java从文件读取数据)
  • Mybatis批量插入index out of range错误的解决(较偏的错误)_java
  • 最新log4j2远程代码执行漏洞(附解决方法)_java
  • java外部类与内部类简介_java(java外部类和内部类)
  • 13dmax打开文件失败解决办法(3dmax打开会出现在语法错误)
  • 2三角函数角度tan 0度至360度正切值对照表
  • 3数字随机生成器(模拟自动选号机)(随机选号码生成器)
  • 4oppo新手机第一次充电多长时间最好(新买的手机正确充电方式)(oppo新买的手机第一次充电需要多长时间最好)
  • 51lbs等于多少kg(1lbs等于多少kgs)(1lb等于多少KG)
  • 6润笔器里面的水是什么(钢笔润笔器里面的水是什么)
  • 7农夫山泉开盖后可以放多久(桶装农夫山泉开盖后可以放多久)
  • 8淘宝积分商城怎么进入(带你玩转淘宝积分商城)(如何进入积分商城)
  • 1 男人吃胡椒有哪些坏处「多吃胡椒对男的有不好」
  • 2一个手机号可以注册两个微信号(龙哥网)(一个手机号可以注册两个微信号码)
  • 3 浦江春毫绿茶的营养价值「浙江浦江茶叶」
  • 47000字拆解 ▏7-Eleven如何「站在顾客角度思考」创新
  • 5 谈谈葛根粉的功效与副作用「葛根粉的功效与作用,葛根的副作用」
  • 6微信小程序盲盒-可对接微信支付(微信小程序抽盲盒技巧)
  • 7 风餐露宿的意思,夜不成眠的意思
  • 8java poi 读取单元格null或者空字符串方式_java

“java安全框架有哪些(java入门基础知识)(java中常用的安全框架)” 的相关文章

windows XP系统Stop c0000218 unknown hard error 蓝屏故障的解决方法

windows XP系统Stop c0000218 unknown hard error 蓝屏故障的解决方法

联想Y450开机时蓝屏,显示的错误码是“STOP: c0000218 Unknow Hard Error c0000218 Unknow Hard Error。” 微软官方对此的故障分析及解决...

从零开始进入java世界(从零学java)

从零开始进入java世界(从零学java)

课程介绍Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,长期以来一直在编程语言使用排名中高居第一位。本套课程将以当前最新的JDK 12版本为平台,带领大家入门Java编...

男性情感必修术视频课程(龙哥网)

男性情感必修术视频课程(龙哥网)

课程介绍智慧聊天术让你远离尬聊!带你解读女性心理,打造魅力男神!教你社交高手的聊天方法,破冰并建立好感产生话术脉络思维让聊天具有逻辑性拒绝尬聊,线下见面聊法。万年备t如何自救逆袭,让女生先对你表白一“...

Spring Boot统一处理全局异常的实战教程_java

Spring Boot统一处理全局异常的实战教程_java

目录注解的介绍@ControllerAdvice@ExceptionHandler拦截异常并统一处理代码实现自定义异常统一异常处理前端返回值类测试用例附:Spring Boot默认的异常处理机制总结注...

jpa onetomany 使用级连表删除被维护表数据时的坑_java

jpa onetomany 使用级连表删除被维护表数据时的坑_java

目录 jpa onetomany 使用级连表删除被维护表数据时的坑 一、异常产生的场景 二、存在异常的问题 三、异常原因分析 四、解决方案 jpa...

关于Java float和double精度范围大小_java

关于Java float和double精度范围大小_java

目录 Java float和double精度范围大小 一、小数的二进制转换(浮点数) 二、浮点数在计算机中的存储 三、指数位的偏移量与无符号表示 四、小结一...