当前位置: 首页 > article >正文

security框架的安全登录

Spring Security介绍

Spring Security: Spring家庭一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用Spring IoCDI(控制反转Inversion of ControlDIDependency Injection依赖注入)AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作

apache Shiro安全框架:一个功能强大且易于使用的java安全框架,提供了认证、授权、加密和会话管理。

Spring Security的使用

使用security安全框架进行登陆时,先在项目中的pom文件导入你需要的依赖,也就是security依赖。

<dependencies>
    <!--SpringSecurity组件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!--web组件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--test组件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <artifactId>org.junit.vintage</artifactId>
                <groupId>junit-vintage-engine</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--SpringSecurit框架里的test组件-->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-devtools</artifactId>  
    <optional>true</optional>  
</dependency>
</dependencies>

之后在你的Maven项目中创建出两个html页面,和一个controller包。你也可以对上面的依赖开启热部署。

添加以上的页面以及controller后运行你的项目,查看页面和控制台。

如果你的控制台出现了这一行代表你使用security安全框架使用成功了,再次查看运行的页面。

或者是

这个Username的默认用户为user,密码则是你的控制台上面输出的内容,也就是Using generated security password:后面的信息。登录后会发现你成功进入了你的登录页面,这是因为它会先对你的默认拦截全部请求,如果用户没有登录,跳转到内置登录页面,你登录成功后才会进入你设置的登录页面。

用户自己进行登录

如果并不想每一次都进入security的内置登录页面可以设置一个UserDetailsServiceImpl类并继承UserDetailsService接口实现,在创建一个UserDetailsServiceImpl进行判断是否是指定的用户和密码。

设置登录成功和失败的结果,也就是登录成功和登录失败去那个页面或者什么提示。

这个失败的效果是需要自己创建。

成功的效果。

授予权限

完成以上方法可以在页面上进行判断,也就是如果登录的用户有这个权限就可以进行如果没有则不可以有以上相对应的操作。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

通过权限判断:
<button sec:authorize="hasAuthority('/insert')">新增</button>
<button sec:authorize="hasAuthority('/delete')">删除</button>
<button sec:authorize="hasAuthority('/update')">修改</button>
<button sec:authorize="hasAuthority('/select')">查看</button>
<br/>
通过角色判断:
<button sec:authorize="hasRole('abc')">新增</button>
<button sec:authorize="hasRole('abc')">删除</button>
<button sec:authorize="hasRole('abc')">修改</button>
<button sec:authorize="hasRole('abc')">查看</button>

</body>
</html>

创建一个判断用户是否有相对应权限的操作。

可以看的只有我们角色和拥有的权限的显示。


http://www.kler.cn/a/469214.html

相关文章:

  • VR+智慧消防一体化决策平台
  • huggingface 下载方法 测试ok
  • 前端(十二)jquery(2)
  • 在Spring Boot项目中使用Zookeeper和Curator实现高效、可靠的分布式锁
  • (leetcode算法题)384. 打乱数组 398. 随机数索引
  • KAGGLE竞赛实战2-捷信金融违约预测竞赛-part1-数据探索及baseline建立
  • 【Cesium】九、Cesium点击地图获取点击位置的坐标,并在地图上添加图标
  • Chrome 查看 session 信息
  • 后端Java开发:第七天
  • ref() 和 reactive() 区别
  • Genome Research | 俄亥俄州立于忠堂组-结合深度学习与蛋白质数据库系统探究反刍动物真核微生物...
  • 解决docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canc
  • 如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库教程
  • SQL Server 中生成等差数列的方法研究
  • 【操作系统不挂科】<内存管理-文件系统-磁盘调度(19)>选择题+简答题(带答案与解析)
  • 挖掘建模之分类与预测
  • Jmeter进阶篇(31)解决java.net.BindException: Address already in use: connect报错
  • Dexcap复现代码数据预处理全流程(一)——replay_human_traj_vis.py
  • leecode1143.最长公共子序列
  • 成语接龙游戏生成器:结合 ZhipuAI 的 Python 实现
  • MySql核心面试面试问题解析
  • Redis - 4 ( 9000 字 Redis 入门级教程 )
  • VSCode突然消失,只好重新下载安装
  • Redis(基础篇 + 实践篇 )
  • 青少年编程与数学 02-006 前端开发框架VUE 04课题、组合式API
  • 后端Java开发:第八天