♥♥哈哈哈我来了
今天我们来讲讲使用Shiro来实现用户登陆权限
简介:Shiro
介绍:
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
主要功能
三个核心组件:Subject, SecurityManager 和 Realms.
Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。
Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
直接走上正题:
第一步:依旧是引入我们的Pom文件
<dependencies> |
是不是感觉很熟悉啊,这些都是我们常用的Pom文件哦。。
第二步:application.yml文件就不用多少来吧。。还是上代码吧:
启动端口
server: |
这也太简单了吧,使用SpringBoot开发就是这么好哦。。
第四步:注意了,开胃菜来了。。。。
创建User对象:(User)
package com.demo.shiro.entity; |
创建数据响应:(Response)
package com.demo.shiro.entity; |
创建我们自定义的异常(SystemException)
package com.demo.shiro.exception; |
创建一个系统工具类类模拟数据信息:(SystemUtil):
package com.demo.shiro; |
OK,到这里我们基本类就全部创建完成了,下面开始主角来了。。。
第五步:创建我们的Shiro相关配置信息
Shiro配置类:(ShiroConfig)
package com.demo.shiro.config; |
Shiro认证和授权类(ShiroRelam):
package com.demo.shiro.config; |
是不是感觉很简单呢,是的,只需要配置这两个类就可以完Shiro了。。。。
####第六步:现在可以开始我们的测试了。。。你准备好了吗?
创建一个登陆页面:(login.html)
|
创建ViewController来访问我们的页面:
package com.demo.shiro.controller; |
这里页面不用展示了,这也太简单了吧。。。。
创建我们的登陆Controller(LoginController)
package com.demo.shiro.controller; |
可能会有报错,不用慌张,是因为我们的LoginService没有创建。。。
创建我们的LoginService(LoginService):
package com.demo.shiro.service; |
创建它的实现类(LoginServiceImpl)
package com.demo.shiro.service.impl; |
这里面的代码也很容易看懂吧,这代码质量太差了吧。。。。
哈哈哈,需要自己优化哦。。。
到这里,我们的登陆逻辑就完了。。。是不是感觉很容易呢。。。
接下来是我们的测试时间了,,Are you ready?
第七步:测试环境:
创建测试Controller(TestController)
package com.demo.shiro.controller; |
这里面有两个没有遇见过的注解吧,那么学习了这篇文章你就会了哦。。。。
这里只是实现了登陆,没有设置过滤器、拦截器这些。。。
我们需要登陆过后才能访问页面。。。有没有想过呢。。。
哈哈哈
目录截图:
测试截图:
登陆界面:
使用admin做测试登陆:
登陆成功后我们会看到以下信息
我相信看得懂吧,没错就是我们自己设置的模拟数据哦。。
接下来我们访问其他功能。。。
访问test/admin这个接口:
我们再访问test/view这个接口:
你是否看到这个页面很慌呢,不要慌,我们要稳住,仔细一看,原来我们没有这个权限,所以。。。。懂吧
OK,这里我们演示完了,还有个注册用户,我们可以自己测试。。。
GitHub地址:Shiro-demo
好啦,写了这么久终于写完了,,,,好累哦。。。
有问题欢迎在评论去评论,,,,感谢你的浏览。。。。么么哒