zoukankan      html  css  js  c++  java
  • shiro笔记(一)

    前段时间简单了解了一下springsecurity,自建demo尝试了一下,本来是为了读某开源项目源码而做的技术储备。结果,又被一些杂七杂八的事情打乱了计划,由于用得少接触的浅,很快springsecurity在我的记忆中模糊了。

    但是这种权限管理的框架还是有必要学一个的,斟酌了一下,最终选择了shiro。主要原因是通过网上调研发现shiro比springsecurity更容易上手,在b站上找了一套教程听了一遍,了解了其中一些概念和流程,然后开始上手操作。

    由于没记住框架的一些类名和方法名,所以又找了一份教程作为辅助,目标是实现一个简单的登录认证,用户名和密码暂时不加密存储在数据库中,自定义realm进行读取数据。

    首先,自定义了realm,扩展的是AuthorizingRealm,实现了认证和授权需要用到的两个方法。将自定义的realm对象传给securityManager,将securityManager传给过滤器工厂,采用的技术是springboot+mybatis+shiro+druid连接池,没想到的是项目居然起不来,起初我怀疑是配置文件的问题,毕竟好久没配置yml了,可能会有些疏忽。经过了一番折腾,项目依旧起不来,此时心态已接近崩溃边缘。下午的时候再仔细一看,居然忘记引入mysql-connector-java依赖,果然是太久没配置了,犯了这种愚蠢的错误。

    果断补全依赖,结果项目依然跑不起来,启动类没有放在最外层目录下,但是我特意加了ComponentScan注解进行扫描,看了一下报错信息,发现原因出在所有的Mapper都没有被扫描到(记得之前整合没出现过这种情况啊?),在使用了@MapperScan后,它终于跑起来了。

    毕竟是初学shiro,本着一切从简的原则将用户角色权限全都塞进了一张表,本以为这一次应该是没什么问题了。使用postman发送了一个post请求居然认证失败???

    本来打算断点跟一下,查看取出的用户名和密码,结果发现断点居然走不到持久层???

    于是,写了一个接口测试了一下获取用户信息的代码,得到的结果是正确的。又注释掉从数据库读取的代码,暂时修改为写死的数据,发现这一次是可以验证通过的。

    最终发现,原来@Autowired没有成功将我的service注入进realm,失策了,又没好好看报错信息... ...

    最后找到的解决方案是在配置类中生成自定义realm实例对象的方法上加上@Bean注解即可。

    最终几经周折总算是实现了一个用户认证功能,丝毫高兴不起来,看来有必要回头搞本书来好好学一下shiro。

  • 相关阅读:
    如何:为 Silverlight 客户端生成双工服务
    Microsoft Sync Framework 2.1 软件开发包 (SDK)
    Windows 下的安装phpMoAdmin
    asp.net安全检测工具 Padding Oracle 检测
    HTTP Basic Authentication for RESTFul Service
    Windows系统性能分析
    Windows Server AppFabric Management Pack for Operations Manager 2007
    Mongo Database 性能优化
    服务器未能识别 HTTP 标头 SOAPAction 的值
    TCP WAIT状态及其对繁忙的服务器的影响
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13891748.html
Copyright © 2011-2022 走看看