Shiro实现登录拦截
我们之前的页面能跳了,现在我们想让一些用户能访问,一些用户不能。
我们在ShiroConfig类中添加:
运行一下:
我们进不去了,说明已经拦截成功。
但是正常的逻辑来说,我们如果登录不上去,应该去跳转到登录页面,所以我们还要做一个登录的页面:
我们写完这个登录页面,还要去写这个页面登录后要跳转到哪个页面:
当我们去访问这个地址时,controller会给我们跳转到这个登录页面。
接下来我们就是要去在配置类中增加限制:
我们设置我们的登录地址:运行:
我们可以看到刚才如果被成功拦截会自动跳转到login.jsp,但是我们这个Shiro不会自动给我们写登录页面,所以我们就需要手动去编写。
我们对add和update这两个页面的拦截作用是一样的,那我们能不能把他们两个的拦截代码集成在一起呢?
我们用通配符把拦截的文件锁定为user下的所有文件。
运行:
如果我们把上一个笔记里的内容,也就是把Shiro和SpringBoot整合好,那么我们做拦截功能其实就写了4行代码在配置类里就实现了。还是挺方便的。
Shiro实现用户验证:
我们之前已经做完了拦截功能,我们现在去实现以下用户验证:
我们在我们的controller中写下验证用户的代码,我们核心就是获取用户,封装信息,然后用login方法去验证成功就跳转到Index反之就跳转到login页面。
然后在前端页面加上msg提示语句。
我们取运行一下:
现在,我们已经执行了我们的
UserRealm类中的方法。我们发现Shiro比较难弄的就是,我们的ShiroConfig配置类和UserRealm类表面上没有直接性的联系。但是其实他们之间是存在互相调用的关系的。
但是我们现在并没有用户名和密码的数据。所以这部分就要在我们的UserRealm中去做一个添加:
运行一下:
我们可以发现,使用Shiro我们很多代码都没有去写,都是自动封装好的,我们的验证也是比较全的。Shiro好用,但是不好理解,因为它本身自己封装的东西太多,我们如果不深挖源码是看不到的。