Spring Security介绍
Spring Security: Spring家庭一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用Spring IoC,DI(控制反转Inversion of Control,DI:Dependency 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>
创建一个判断用户是否有相对应权限的操作。
可以看的只有我们角色和拥有的权限的显示。