用过滤器判断用户是否已经登录
2013-03-31 15:12
393 查看
首先我描述一下问题的现象,比如我已经登录了一个网站,那么在你没有关闭这个浏览器之前,你继续点击这个网站,那么我们是不是应该做一些处理,因为用户要是想要换个账号登录可以按安全退出,如果仍是点击想登录,那我们就应该让他跳过登录界面,而直接进入网站,那么下面我要写的就是基于这样一个情况。
首先类中应该这样去写:
建一个RightFilter包为com.ll.action
package com.ll.action;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
public class RightFilter
implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
//判断如果没有取到用户信息,就跳转到登陆页面
if (session.getAttribute("user")==null) {
/*这里我之所以这样去写,主要是我的用户信息以一个数组类型,名为user,然后存放在session中了,所以我要判断session取出来的用户信息是否为空为空这说明用户第一次登陆,跳到登陆界面,否则跳到登陆后的界面*/
//跳转到登陆页面
request.getRequestDispatcher("login.jsp").forward(request, response);
}
else {
//已经登陆,跳到首页面
request.getRequestDispatcher("index.jsp").forward(request, response);
// chain.doFilter(request,response);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
filter中应该这样去写:
<filter>
<filter-name>right</filter-name>
<filter-class>com.ll.action.RightFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>right</filter-name>
<url-pattern>/login.jsp</url-pattern>
</filter-mapping>
首先类中应该这样去写:
建一个RightFilter包为com.ll.action
package com.ll.action;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
public class RightFilter
implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
//判断如果没有取到用户信息,就跳转到登陆页面
if (session.getAttribute("user")==null) {
/*这里我之所以这样去写,主要是我的用户信息以一个数组类型,名为user,然后存放在session中了,所以我要判断session取出来的用户信息是否为空为空这说明用户第一次登陆,跳到登陆界面,否则跳到登陆后的界面*/
//跳转到登陆页面
request.getRequestDispatcher("login.jsp").forward(request, response);
}
else {
//已经登陆,跳到首页面
request.getRequestDispatcher("index.jsp").forward(request, response);
// chain.doFilter(request,response);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
filter中应该这样去写:
<filter>
<filter-name>right</filter-name>
<filter-class>com.ll.action.RightFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>right</filter-name>
<url-pattern>/login.jsp</url-pattern>
</filter-mapping>
相关文章推荐
- 过滤器(filter)判断用户是否登录
- 判断用户是否已经登录(跳转到不同页面或者执行不同动作)
- filter 过滤器用户登录并判断是否属于电脑端或者手机端访问
- ios应用开发--判断用户是否已经登录
- java web点击链接用js判断用户是否已经登录 (js获取session及判断是否为空)
- 判断用户是否已经登录
- javaweb过滤器filter-判断用户是否登录
- Django中的模版文件--index.html(判断用户是否已经登录)
- PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
- 在ASP.NET中怎么用SESSION判断用户是否登录?
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- Shell脚本:判断用户和用户组是否已经存在/创建用户和用户组
- MVC 检测用户是否已经登录
- 过滤器检验用户是否登录
- C#中判断当前登录的用户是否是系统管理员的方法
- 验证用户是否已经登录和自动登录
- 判断用户是否登录
- 判断用户是否登录
- 页面判断用户是否登录
- angularjs给Model添加拦截过滤器,路由增加限制,实现用户登录状态判断