用过滤器判断用户是否登录,并且可以进行操作

HttpServletResponse res = (HttpServletResponse) response;
HttpSession Session = req.getSession(true);
//从session里取的用户名信息
String username = (String) Session.getAttribute("loginUser.username");
//判断如果没有取到用户信息,就跳转到登陆页面
if (username == null || "".equals(username)) {
//if(session.getAttribute(username)== null){
//跳转到登陆页面
//res.sendRedirect("http://"+req.getHeader("Host")+"/login.jsp");
res.sendRedirect("http://"+req.getHeader("Host")+"/login.jsp");

//out.pritln("请您先进行登录");
}
else {
//已经登陆,继续此次请求
chain.doFilter(request,response);
}
}
public void destroy() {

}
}

页面总是跳转到登录页面,不管是否已经登录,感觉可能是获取不到session中的username,是不是我的写法有问题?如果我的String username = (String) Session.getAttribute("loginUser.username");这句话写的有问题,求问应该怎么写合适??

我在LoginAction中session的写法是这样:

User loginUser=userService.login(username,password);
if(loginUser!=null){
ActionContext context = ActionContext.getContext();
//登录状态
context.getSession().put("loginStatus",1);
//登录账户的信息参数传递(修改详细信息的参数要用到这个传递)
context.getSession().put("loginUser", loginUser);

return SUCCESS;
}else{
//登录错误

addActionError("登陆错误");

return ERROR;
}
求大神指点!

你在session中设置的是User对象,所以你通过session去取时,也只能取到User对象
User user = (User) Session.getAttribute("loginUser");
然后判断user不为空和user.getUsername不为空追问

还有就是如果,我user中有个quanxian属性,需要使用过滤器进行权限判断,怎么获取?是跟username的写法一样么

追答

你已经取得了这个User对象,就可以取到这个对象上的所有属性了

追问

判断user.getUsername不为空是这么写么? 之中user.getUsername的方法是这么写么?
User user = (User) Session.getAttribute("loginUser");
String username = user.getUsername();

if (user == null || username == null) {

追答

你上面的写法有问题的
比如user 为 null
那么 user.getUsername() 就变成了null.getUsername()
null肿么会有getUsername()方法呢,就会出空指针异常
一般如果只做未登录的判断,只需要判断user 是否为空
你说你要验证user.quanxian()
那你就应该
if(user == null){
// to 登录
}else{
xx quanxian = user.getQuanxian();
然后再验证权限
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-26
String username = (String) Session.getAttribute("loginUser.username");//getAttribute打印一下,一定为空,你获取loginUser后,再获取密码判断下试一下追问

详细怎么写啊?我代码基础不扎实。实在不会写。。

第2个回答  2013-05-27
String username = (String) Session.getAttribute("loginUser");
把第四行代码改成这个就ok了

严重怀疑代码不是你写的追问

这串代码是网上复制的,我想做个过滤器,可是获取不到session中的值,楼下的方法能用。

追答

嗯 做这行就得多练

校验用户是否登录过滤器Filter
CheckLoginFilter net.cnki.tpi.cms.util.CheckLoginFilter redirectURL \/login.jsp notCheckURLList \/error.jsp;\/login.jsp CheckLoginFilter \/* 2、然后新创建一个CheckLoginFilter.java类,代码如下:\/** * 校验用户是否已登录过滤器 * @author lpz * *\/ public class CheckLoginFilter...

使用filter过滤用户是否登录
登录成功后 将用户名放在session里面 在过滤器里面进行验证session是否为空 为空跳转到登录页面

如何用Filter实现对注册用户是否登录的过滤
package filter;import java.io.*;import javax.servlet.*;import javax.servlet.http.* ;\/\/对用户是否登录进行过滤 public class UserFilter implements Filter { \/\/过滤器初始化 public void init(FilterConfig filterConfig) throws ServletException { } \/\/实现Filter接口主方法 public void doFilter(...

...像webform一样自定义一个BaseController实现判断用户是否登录...
写一个过滤器,在需要做身份验证的action上加上过滤器就可以了 [CheckUserFilter] public ActionResult DelItem(int? id, FormCollection form) { bool result = false; if (id != null) { int _id = id ?? 0; result = new DbHelper().DelSysUserInfo(_id); if ...

java有什么方法可以实现阻止客户端同时登陆,只能一人在线?三次登陆错误...
最简单的方法是给数据库帐号信息加个状态字段,标明用户是否已登陆或是被锁定。考虑到登陆超期判断和被锁定账户开锁问题,还需要加个时间戳字段。这样每次登陆、访问刷新网页时检查一下这两个字段就可以实现目的了。

struts2配置自定义过滤器,检查用户是否登录,没登录就不许进入某些页面...
struts2写拦截器吧?过滤器貌似servlet里边用.public class LoginInterceptor extends AbstractInterceptor{ private static final long serialVersionUID = 1L;Override public String intercept(ActionInvocation invocation) throws Exception { Map<String, Object> session=ActionContext.getContext().getSession();...

设计用户过滤器 对需要保护的页面过滤 如果已经登录则允许访问 否则跳 ...
比如你将要需要登录后才能访问的页面放在main文件夹下,然后配置过滤器时,将过滤路径设置为\/main\/*就可以了,login.jsp不能放在main文件夹中,防止login.jsp也被过滤,造成死循环。。。

CAS单点登录原理分析(一)
第一步 :用户访问应用系统1。过滤器判断用户是否登录,没有登录,则重定向(302)到认证系统去进行认证操作。 第二步 :重定向到认证系统,显示登录界面,用户输入用户名密码。认证系统将用户登录的信息记录到服务器的session中。 第三步 :认证系统给浏览器发送一个特殊的凭证ticket,浏览器将凭证交给应用系统1,应用系统1...

判断用户登录是用springmvc 拦截器还是filter
过滤器:是在javaweb中,你传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符.。二...

拦截用户登录,登录成功后跳转的方式有哪些?
在过滤器中判断用户是否登录,没有登录,拦截路径,保存在session作用域中,转发到登录页面,登录成功,在后台得到session中的路径,如果为空,则是用户第一次登录,不为空,则得到路径并转发到用户第一次请求的页面。学过过滤器没?

相似回答