NutzCN Logo
精华 我模仿NutzBook发现我的项目NutDaoRealm从未调用过
发布于 3342天前 作者 qq_74967e40 2743 次浏览 复制 上一个帖子 下一个帖子
标签: shiro

所以也没有正确的鉴权,导致每次验证都出错。。。
请问NutDaoRealm是在哪儿初始化,哪儿调用的呢?
Shiro.ini里是正确配置了的。

10 回复

初始化什么?数据?还是表结构?
自豪地采用 NutzCN ionic

@wendal 就是doGetAuthenticationInfo和doGetAuthorizationInfo方法都从未调用过!!

贴shiro.ini
自豪地采用 NutzCN ionic

能调用到需要几个条件。 注册了合适的Token类型,对应的Token类型的Filter配置对urls,然后登录的时候用POST
自豪地采用 NutzCN ionic

说一下Shiro的基本调用过程(我的理解, ^_^)

核心配置:

[main]
nutzdao_realm = net.wendal.nutzbook.shiro.realm.NutDaoRealm
authc = org.nutz.integration.shiro.CaptchaFormAuthenticationFilter
authc.loginUrl  = /user/login
logout.redirectUrl= /user/login
[urls]
/user/logout = logout
/user/**     = authc

首先, 登陆必须是特定URL(这里是/user/login),且必须POST请求,这是AuthenticationFilter里判断是否为登陆请求的默认方式
过程如下:
1. 首先, 浏览器发起一个POST请求到/user/login
2. web.xml里面的ShiroFilter拦截到这个请求
3. Shiro根据[urls]和[main]里面的配置,知道这个请求要交给CaptchaFormAuthenticationFilter处理
4. CaptchaFormAuthenticationFilter判断该请求是POST,所以,调用executeLogin
5. executeLogin中判断各种小条件,然后生成CaptchaUsernamePasswordToken
6. 而这个CaptchaUsernamePasswordToken正是nutzdao_realm对于的net.wendal.nutzbook.shiro.realm.NutDaoRealm实例的构造方法中声明的类型, 这里说一下, shiro会把shiro.ini里面的realm实例存为List, 在配置文件中是不能直接看出Realm和Token类型的关系的
7. 然后shiro就调用NutDaoRealm的doGetAuthenticationInfo获取登陆信息了,然后判断hash后的密码进行判断登陆
8. 完成后再回到CaptchaFormAuthenticationFilter, 执行onSucess或者onFail之类的操作,完成登陆

@wendal 谢谢老大的详细介绍。我有空一定详细看看,现在我的项目第七步是没有走的,所以应该是之前某一步出了问题。

您好,请问您解决这个问题了吗,我也是模仿教程去做,发现完全没有调用。另外,我看日志,登录之后应该是经过了数据库正确的验证,但是就是无法跳转到登录成功之后的页面,有啥想法吗,谢谢啦

@backbp 检查NutRealm的构造方法是否关联的正确的Token

来自炫酷的 NutzCN

@wendal
您好,我是模仿这nutzbook写的,您说的是这个么:
QQ截图20151101114705_jpg
另外,是不是因为没有调用这个,所以即使后台的用户名密码验证成功了,也**没有办法跳转到成功之后的页面**呢。
因为我对shiro的原理不是很清楚,还望见谅,谢谢啦

@backbp 你遇到的问题已经在另外一个帖子里面说了 关于shiro登录无法跳转登录成功之后的页面

添加回复
请先登陆
回到顶部