运行webapp1,怎么会跳转到server中的登录界面的?听不太懂,老师可以将详细点吗?

运行webapp1,怎么会跳转到server中的登录界面的?听不太懂,老师可以将详细点吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

6回答
好帮手慕珊 2018-04-11 18:38:40

http://img1.sycdn.imooc.com//climg/5acde4b00001d78015150212.jpg

我按照你的代码改了,我这边webapp1登录后,在地址栏再输入http://127.0.0.1:8082是可以登录的。你再确认一下是否其他地方也改动了,或者重新下载老师的源码,只改上述的内容再试一下。

关于你说的没有用到单点登录的情况,因为在这个课程中,老师关注的是单点登录逻辑的实现,所以对用户名密码的判断是比较简单的。如果是实际开发中,用户名和密码是从数据库中读取出来的,一般情况下是不一样的,所以也不会出现两个空串相等的情况。

关于过滤器的内容,看一下课程的3-2小节。

http://img1.sycdn.imooc.com//climg/5acde557000140dd06440364.jpg

祝学习愉快!

  • 提问者 浣玉 #1
    您上面说的“我这边webapp1登录后,在地址栏再输入http://127.0.0.1:8082是可以登录的”,上面的地址栏是webapp1所在页面的地址栏吗?
    2018-04-12 14:40:43
  • 好帮手慕珊 回复 提问者 浣玉 #2
    在浏览器中新开了一个标签
    2018-04-12 17:43:57
好帮手慕珊 2018-04-03 12:03:24

LoginServlet里面,只是登录成功后,生成了一个ticket,然后把这个ticket通过url地址传给了webapp1,在webapp1的过滤器中把cookie添加到webapp1本地。然后在webapp1的MainServlet中调用setCookie()方法为webapp2也设置cookie。所以这里不需要ticket校验。你修改的这段代码,可以加个断点,比如在你修改的这个if语句中加断点,还有在MainServlet中的第一个if语句中加断点,看是否执行了setCookie()方法。断点调试的方式,就是加好断点后,运行的时候选择这个图标http://img1.sycdn.imooc.com//climg/5ac2fc430001464e04040098.jpg

然后正常输入用户名和密码,提交后执行到断点就会停下来。然后进行单步调试就可以了

http://img1.sycdn.imooc.com//climg/5ac2fcfa0001780f05140100.jpg如图所示,是单步调试的按钮

祝学习愉快!

  • 提问者 浣玉 #1
    老师在吗?需要进行ticket校验吗?如果有用户名不为空的的限制,当webapp1登陆成功之后,进入webapp2的登录界面,点击登录时不能成功的。针对账号密码的有限制只有两者相等的判断,如果在前面的情形里面没有为空判断的话,不输入用户信息登录webapp2是可以登录上的,但是这是这是满足用户名与密码相等的校验的,这好像没有体现单点登录的作用,不知道我理解的对不对,老师求解?
    2018-04-11 11:59:13
  • 好帮手慕珊 回复 提问者 浣玉 #2
    ticket校验是在webapp的过滤器中进行的,另外,不太明白你说的,你是说当webapp1登录成功后,还能再打开webapp2的登录页面,而不是直接登录成功吗
    2018-04-11 15:11:39
  • 提问者 浣玉 回复 好帮手慕珊 #3
    没见过滤器啊,是写的java代码吗?我的意思是登录webapp1后,点开webapp2的登录页面,不用输入用户信息就可以等进去了,而用户校验如果添加非空限制的话,就登不上去。没有非空限制的话,两个空字符串也是相等的,这样的话,似乎没有用上单点登录。
    2018-04-11 15:53:04
提问者 浣玉 2018-04-02 19:57:06
老师,这里是相关的代码,后一张上面是我添加的是否为空的判断。

http://img1.sycdn.imooc.com//climg/5ac21a8e0001057112140655.jpg

http://img1.sycdn.imooc.com//climg/5ac21a8e0001a2c513330695.jpg

  • 如果只是改了这部分,应该没什么问题,只要if条件满足,能执行if语句中的代码就行。你确认是webapp1登录成功后,再输入http://localhost:8082不能直接登录成功,还跳转到登录页面是吗?除非是webapp1登录后没有调用setCookie()方法,没有为webapp2设置cookie才会出现这种情况。MainServlet的代码是否有改动
    2018-04-03 10:16:28
  • 提问者 浣玉 回复 好帮手慕珊 #2
    mainservlet没有修改.我只修改了这里。
    2018-04-03 10:22:19
  • 提问者 浣玉 回复 好帮手慕珊 #3
    对了这里需要有ticket的校验吗?感觉这里只是互通了各个应用的ticket值到cookie中,
    2018-04-03 10:37:17
提问者 浣玉 2018-04-02 15:30:05

如果用户通过webap1登录进去,切换到webapp2页面后,就可以不输入密码账户也登登录吗?

还有就是,LoginServet中怎么没有判断用户密码和账户为空的情况。
代码里面好像不怎么清楚。
谢谢!

  • 如果用户通过webap1登录进去,切换到webapp2页面后,就可以不输入密码账户也登登录吗?是这样的,webapp2就可以直接登录成功了,因为在webapp1登录成功时,启动了一个线程为webapp2也设置了cookie,也就是调用的setCookie方法。LoginServlet中没有账户密码为空的判断,由于案例关注的是单点登录的内容,所以此处只是简单的认为用户名和密码一致就可以登录成功,其他没有验证。祝学习愉快!
    2018-04-02 17:48:20
  • 提问者 浣玉 回复 好帮手慕珊 #2
    我自己添加了账户和密码是否为空的判断,然后在webapp2不输入的情况下,就登录不了了。是不是缺少什么东西?
    2018-04-02 17:51:28
  • 好帮手慕珊 回复 提问者 浣玉 #3
    你把你的代码贴出来看看吧
    2018-04-02 18:59:42
好帮手慕珊 2018-04-02 14:33:45

首先从登录说起,登录是从服务端登录的,登录成功后会跳转到一个链接:

http://img1.sycdn.imooc.com//climg/5ac1ccbf0001d5c308770056.jpg

在这个链接中的source就是webapp,比如是webapp1,source就是http://127.0.0.1:8081,后面的/main就是在webapp1中配置的servlet,那么这个servlet是在过滤器执行完没问题了以后会执行的servlet。在这个Servlet里面会跳转到相应的登录成功页面,如下所示就是跳转的链接。

http://img1.sycdn.imooc.com//climg/5ac1cd7800011bbc13870406.jpg


过滤器中有很多if语句,执行时会按照从上往下的顺序依次进行判断,这些if语句其实是多种不同的情况。一开始判断是从cookie中取出ticket,如果有就是登录成功了,那么就调用doFilter()放继续执行Servlet。这种情况是已经登录过了,你再输入http://localhost:8081 的情况。

关于request,是直接从第一个图中取ticket的值,然后添加到cookie中,并完成跳转,执行Servlet。这种是在服务端登录后跳转过来的情况。

祝学习愉快!


好帮手慕珊 2018-04-02 11:24:33

当访问webapp1时,过滤器会进行处理,如果发现ticket的值为null,就认为没有登录,就跳转到单点登录页面。也就是3-2小节中过滤器部分的内容。

http://img1.sycdn.imooc.com//climg/5ac1a25d00016bfe15730889.jpg

祝学习愉快!

  • 提问者 浣玉 #1
    谢谢老师,那还有其他非用户登录的应用是怎么登录上的啊,(怎么跳转到登录成功页面的?)。过滤里面的几个部分是怎样的运行顺序,一会儿把ticket存放在response中,一会又存放在request中。谢谢
    2018-04-02 12:39:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师