做登录过滤器的时候遇到的问题

我的未来我决定 提交于 2019-12-06 19:04:54

1、不要把页面要用的js,css等文件给拦截了

1)ignoreUrls表示这两个Url通过过滤器时放行

2)ignoreType表示如果请求的文件的文件类型是这几种的某一种时直接放行

当然放行的动作是在后台实现的,只是进过滤器的时候会取得param-values的值,在根据这些值做是否放行的动作

 

2、在Session中取当前登录用户名的问题

我用的Struts2,登录成功后,将用户名放在Session里面:session.put("loginMgName", vo.getMgName() ),

在过滤器写

String userName = (String)request.getSession().getAttribute("loginMgName");得到的userName是null,

换作

String userName  = (String) ActionContext.getContext().getSession().get("loginMgName");得到也是null,

然后我在Action里面,当登录成功后加了下面这句:

HttpSession sess = ServletActionContext.getRequest().getSession();
sess.setAttribute("loginMgName", vo.getMgName());

结果还是取到null

后来找来找去,也不到什么情况就改成下面这样

HttpSession sess = ServletActionContext.getRequest().getSession();
sess.setAttribute("userName", vo.getMgName());

过滤器写

String userName = (String)request.getSession().getAttribute("userName"); 正确取到当前登录用户

目前还没搞清楚 Action的Session和HttpSession到底是什么关系。。。

 

-----------------------------2016/7/14-----------------------------------------

今天发现关于上面session中取值的问题完全是胡扯

之所以出现上面说的那种现象是因为我做了一个 退出 按钮,没有取到值是因为我点了退出按钮的时候清掉了session的值

后面换了个key又往session中赋值了用户名,而退出的动作并没有清掉新key的value,所以导致重新登录后请求其他页面经过过滤器的时候出现只能取到某一个key下的用户名,所以最后结论是 Action的Session和HttpSession 其实是同一个对象的不同表现形式

神呐,原谅这么愚蠢的我吧!!!

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!