ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Filter实现登录后自动跳转目标url

2022-02-19 20:33:53  阅读:158  来源: 互联网

标签:url Filter 访问 internal jsp 跳转 login 目录


5)Filter实现登录后自动跳转目标url

马 克-to-win:下面我们将利用Filter技术完成一个稍微实用一点的需求。需求的内容如下:一言以蔽之,我们就想保护internal目录下的所有 资源,(其他地方不保护)。具体有这么几点:如果用户非法访问internal目录下的资源,就将他导向internal目录下的login.jsp。如 果在login.jsp当中,他输入了正确的用户名和密码,就让他自动跳转到他原来想访问的那个jsp。但如果在一开始,用户直接就想访问 login.jsp,即使他输入了正确的用户名和密码,也只把他导向回根目录的首页index.jsp。这里需求有两个难点。一是自动跳转到他原来想访问 的那个jsp,这需要把他原来想要访问的目标给存在Session当中。想得到他想访问的目标,就用 (HttpServletRequest)hsr.getRequestURI()。马克-to-win:这还不算难。第二个难点就更难。我怎么能知道用 户一开始的目的就是想访问login.jsp,还是用户一开始想访问internal目录里其他的资源而被导到login.jsp的呢?因为 login.jsp也在internal目录里,所以到达login.jsp之前,无论如何要经过Filter。问题好像很困难。这里,我是这样完成这个 需求的:当用户想非法访问internal目录下的任何资源前一瞬间(除了login.jsp自己,这一点你要加判断,desURL.endsWith ("login.jsp"),否则逻辑上会出问题,不信你试试),我在request范围里加上一个标志:illegal。马克-to-win:只有这种 情况,我才加这个标志。这样在login.jsp的正常程序前,我再加一个判断,看是否有这个标志?如果有,就证明用户想非法访问internal目录下 的某个资源。如果没有这个标志,就说明用户一开始就想访问login.jsp。
例 1.2.5
index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<body>
<A HREF="/ServletHello/internal/secret.jsp">secret.jsp</A>
<A HREF="/ServletHello/internal/secret2.jsp">secret2.jsp</A>
<A HREF="/ServletHello/internal/login.jsp">login.jsp</A>
<A HREF="/ServletHello/home.jsp">home.jsp</A>
</body>
</html>
secret.jsp
<%@ page contentType="text/html; charset=GBK" %>
这里秘密地方,来到这,说明你已经登录了
secret2.jsp
<%@ page contentType="text/html; charset=GBK" %>
这里秘密地方2,来到这,说明你已经登录了
home.jsp
<%@ page contentType="text/html; charset=GBK" %>
<br>这是在home.jsp<br>
login.jsp
<%@ page contentType="text/html; charset=GBK" %><html>
<body>
<center><h3>登录:马克-to-win</h3></center>
<%=request.getRequestURI() %>
<%System.out.println(request.getRequestURI()); %>
<%
String reqRetu=(String)request.getAttribute("illegal");
if(reqRetu==null)
{
   System.out.println("直接来的,未经过filter的setAttribute处理");
/*只要直接访问login.jsp,就不再记录过去想去哪儿了。*/   
   session.removeAttribute("destinURL");
} else {
   System.out.println("你要去 "+session.getAttribute("destinURL"));
}
%>        
<form action="../MarkToWinServlet" method="post">
姓名<INPUT TYPE="TEXT" NAME="name">
密码<INPUT TYPE="TEXT" NAME="pass">
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>

 


更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44638460/article/details/104079553

标签:url,Filter,访问,internal,jsp,跳转,login,目录
来源: https://www.cnblogs.com/malala/p/15913548.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有