jsp防止通过url访问没有权限的页面

jsp防止通过url访问没有权限的页面,第1张

用 javax.servlet.Filter

例1、登录验证

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {

HttpServletRequest req = (HttpServletRequest) request

HttpServletResponse res = (HttpServletResponse) response

if(req.getSession(true).getAttribute("登录标记")==null){

res.sendRedirect("登哪盯模陆页面")

return

} else {

chain.doFilter(request, response)

}

}

<web-app ...>

<filter>李缓

<filter-name>名字随便起</filter-name>

<filter-class>wyf.web.servlet.filter.WangyfPrintFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>这里的名字要与上面的名字一致</filter-name>

<url-pattern>这里填写要保护的路径 * 表示一切(如/user/*)</</url-pattern>

<dispatcher>REQUEST</dispatcher>

<dispatcher>INCLUDE</dispatcher>

<dispatcher>FORWARD</dispatcher>

</filter-mapping>

例2、高级权限验证

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {

HttpServletRequest req = (HttpServletRequest) request

HttpServletResponse res = (HttpServletResponse) response

if(req.getSession(true).getAttribute("高级用户标记")==null){

res.sendRedirect("高级用户登陆页面")

return

} else {

chain.doFilter(request, response)

}

}

<web-app ...>

<filter>

<filter-name>不能和上面的名字相同</filter-name>

<filter-class>***.***Filter</filter-class>

</filter>

<filter-mapping>

<filter-name>要与上面的名字一致</filter-name>

<url-pattern>高级用户的路径一般是低级用户的子目录(如/user/gaoji/*)</url-pattern>

<dispatcher>REQUEST</dispatcher>

<dispatcher>INCLUDE</dispatcher>

<则雀dispatcher>FORWARD</dispatcher>

</filter-mapping>

其他说明,

1、把要保护的 JSP 文件放到 WEB-INF 下的对应的目录中。

2、Servlet 的路径也要与保护路径一致

3、登录成功后要把相应的登录标记放到 Session 中。

ServletActionContext.getRequest().setAttribute("Login","true")

只是request是不够的,用request则是一次页面请求后Login这个Attribute就没有了.

应该是用Session

ServletActionContext.getRequest().getSession(true).setAttribute("Login","true")

这样消磨枯就是在整个会话过游裂程中都有效..

然后到了每个jsp页面的时候,在jsp页拿洞面开头进行下验证

<%

if(request.getAttribute("Login")!=null){

String message=(String)request.getAttribute("Login")

if(!message.equals("true"))

//如果登录标志不为true则跳转回登录页面

response.sendRedirect("/login.jsp")

}

%>

其实用过滤器Filter也可以做,原理是类似的..

struts2中防止jsp不被直接访问的方法是把jsp放在WEB-INF目录下。

struts2的WEB-INF路径下的jsp文件是受保护的,禁止客户端的浏览器直接对jsp文件进行访问。

所以在struts.xml中的配置action的返回结果result时,应该配裂态置全路径。

配置如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//液脊EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="default" namespace="/" extends="肆埋源struts-default">

<action name="index" class="com.maple.action.IndexAction">

<result>/WEB-INF/admin/login.jsp</result>

</action>

</package>

</struts>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8154308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存