(1)前台登录页面 syslogin.jsp 只是个表单,主要目的就是接受用户输入的用户名和
密码字段,然后交给后台处理。action 变量指定了该表达的提交方式,既是交由/a/login 所
对应的函数来处理。但是在登录跳转到 controller 之前加入 shiro 验证(登录时候的密码验
证和授权的主要逻辑都在 shiro 里面完成,LoginController 只是根据 shrio 返回的登录成功
情况进行页面的跳转),shrio 配置了一个名为
authh\FormAuthenticationFilter 的过滤器,当用户登录任意界面时,shiro 会对当前状
态进行检查。如果发现需要登录,则会自动跳转到配置文件里 loginUrl 属性所指定的 url 中。
而这一 url 又被指定为所需要验证权限名是 authc 权限,即需要验证。接着,authc 的 filter
被指定为 formAuthenticationFilter,所以前端的 username 跟 password 这两个参数首先会
被 formAuthenticationFilter 过滤器过滤处理,然后传送到 createToken 函数生成一个封装了
两个属性的自定义的 token。
然而 jeesite 里面的 security 层里面的 FormAuthenticationFilter 继承了 authh\
FormAuthenticationFilter,重写了 createToken 函数
(2)然后 token 被传给 SystemAuthorizingRealm 中的 doGetAuthenticationInfo 进行密
码和登录名的验证,SystemAuthorizingRealm 中含有 service 层的 systemService 的实例,
该实例通过调用 utils 层的 UserUtlis 来获取 useDao,再通过登录名查询数据库中对应
评论0
最新资源