如果用户没有登陆直接通过url访问其它页面的解决办法
2014-01-21 15:25
281 查看
项目的登陆功能是模块差不多都做完时候才加上的,由于项目都是用框架做的,现在想增加登陆功能,如果用户直接通过url访问其它页面时候则返回到登陆页面。
这次的解决方案是不依赖任何框架和jar包。就用最基本的servlet完成。思路是:如果用户登陆成功则把用户登陆的信息存在session里面,在过滤器中获取session中刚刚存的值,如果存在表示用户登陆成功,如果没有表明用户不合法,返回到登陆页面。
下面是过滤器源码:
写完过滤器后要在web.xml里面配置一下。配置文件:
这次的解决方案是不依赖任何框架和jar包。就用最基本的servlet完成。思路是:如果用户登陆成功则把用户登陆的信息存在session里面,在过滤器中获取session中刚刚存的值,如果存在表示用户登陆成功,如果没有表明用户不合法,返回到登陆页面。
下面是过滤器源码:
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /* * 过滤器 */ public class LoginFilter implements Filter { // 需要定义系统页面访问中可放行的连接 private List<String> list = new ArrayList<String>(); public void init(FilterConfig arg0) throws ServletException { list.add("/index.jsp"); list.add("/LoginAction.do"); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; // 1、获取页面中的访问的路径连接 String path = request.getServletPath(); if (list != null && list.contains(path)) { // 如果页面中获取的访问连接于定义的可放行的连接一致,则放行 chain.doFilter(request, response); return; } // 2、从session(flag)对象中获取当前登录的用户标志 Object flag = request.getSession().getAttribute("flag"); if (flag != null) { // 如果从session中获取的用户对象不为空,则放行 chain.doFilter(request, response); return; } // 如果不满足条件1和2,则不能放行,回到系统的登录页面 response.sendRedirect(request.getContextPath() + "/"); } public void destroy() { } }
写完过滤器后要在web.xml里面配置一下。配置文件:
<filter> <filter-name>filter</filter-name> <filter-class>com.dongbest.servlet.LoginFilter</filter-class> </filter> <!-- 拦截以.jsp结尾的链接 --> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <!-- 拦截以.do结尾的链接 --> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <!-- 设置session失效时间为30分钟 --> <session-config> <session-timeout>30</session-timeout> </session-config>把代码引到项目中后,该功能就可以完成了。源码已经上传到资源里面 下面是链接:http://download.csdn.net/detail/zl544434558/6870647
相关文章推荐
- java项目中普遍存在的一个bug,用户直接可以通过url访问本人没有权限的页面
- oa系统禁止用户直接通过url去访问<iframe>的页面
- 防盗链——防止其他页面通过url直接访问本站资源
- 防止用户不登陆直接输入网址访问页面
- win10安装完Ubuntu后重启没有引导页面,直接进入Windows的解决办法
- 防止用户直接访问有关jsp页面的几种办法
- 【提示级】TensorBoard启动后,在浏览器访问页面空白,后台报 path /[[_traceDataUrl]] not found, sending 404 的解决办法
- WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
- 解决从其它搜索引擎不能直接访问百度页面的问题
- asp.net页面通过URL参数传值中文乱码问题解决办法
- 防止用户直接访问jsp页面的几种办法
- asp.net页面通过URL参数传值中文乱码问题解决办法
- HttpServletRequest的getServletPath、getServletURI、getServletURL等区别 &&如何防止用户通过直接输入URL访问网页
- WEB-INF下的jsp页面用户不能直接访问如何解决?
- javaweb中如果用户没有登录,不能访问别的页面,只能访问登录页面
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
- JS判断用户是否有权限进入当前页面,没有直接关闭(解决IE7以上版本提示问题)
- 解决本地调试时不能通过IE直接浏览aspnet页面的办法
- 通过request.getHeader("referer")防止用户手动修改URL访问非权限页面
- magento 产品详细页面的产品url没有伪静态的解决办法