struts实现拦截登录问题

问题描述

struts实现拦截登录问题

ajax提交数据到后台---》struts分配请求映射到具体的action--》action返回result json字符串并且设置session--》ajax的success解析json 成功就跳转到拦截action去获取session--》用户名密码正确就返回“login”跳转到main.html的路径

这里可以实现跳转。。。但是以上的流程在拦截器里面获取不到session,但是我自己写一个简单的跳转action到具体页面后,在去进入这个action方法是可以获取到这个session 的

请问各位大神,我这样实现这个拦截有什么问题吗,还是session 的设置必须是完成一个完整的会话,我想不经过拦截器直接跳转到action,但是这样不是和直接访问一个jsp资源是一样的吗,拦截器不就没啥用处了吗大神来解答解答。。。

login.java

if(password.equals(user.getPwd())){
ActionContext.getContext().getSession().put("userName", userName);
ActionContext.getContext().getSession().put("passWord", password);
map.put("result", "success");
JSONObject json = JSONObject.fromObject(map);
result=json.toString();
System.out.println("成功返回数据");
return "success";
}

                ajax的success

                var result = d.result;
            //返回success则自动跳转到主界面
            if (result == "success") {
                location.href = "login";
            }
        }

        srtuts的跳转
        <package name=""  namespace="/" extends="default">
<action name="login" class="com.zjm.interceptor.testLogin">
<interceptor-ref name="sessionCheckStack"/>
</action>
拦截器
<global-results>
<!-- 配置tocken的invalid.tocken的返回试图,即当页面重复提交,页面将自动转到error.jsp -->
<result name="invalid.token">/error.jsp</result>
<result name="backhome"  type="redirectAction">IndexAction</result>
<result name="login">/WEB-INF/main.html</result>
<result name="noLogin">/login.html</result>
</global-results>

        拦截器内获取session代码
            String userName=(String)session.get("userName");
    String passWord=(String)session.get("passWord");
    System.out.println(userName+"  "+passWord);
    if(userName!=null&&passWord!=null){
        User user=sysUserService.findOneUser(userName);
        String result=user!=null?(passWord.equals(user.getPwd())?Action.LOGIN:"noLogin"):"noLogin";
        return result;
        }

这一套流程下来输出的session为null

我简单写了一个action跳转到一个空页面,在action里面设置了sessio,在成功跳转到一个页面以后再去调用这个拦截器里面的方法是可以输出这个session里面的内容

解决方案

struts实现拦截器的问题

时间: 2024-10-26 21:36:53

struts实现拦截登录问题的相关文章

struts-关于Struts自定义拦截器的问题

问题描述 关于Struts自定义拦截器的问题 Struts自定义拦截器里只能设置不拦截指定的方法或者只拦截指定的方法.如果我有两个Action(Action1,Action2)而里面的方法有相同方法名的方法(foo()),而我想拦截Action1的foo()方法,不想拦截Action2的foo()方法,该怎么做呢,能不能指定拦截器不拦截指定的Action呢?*_* 解决方案 运行逻辑是先运行拦截器再运行action,拦截器配置可作用于一个action下,两个action完全可以分开配置 解决方案

struts中用拦截器实现登录验证功能AuthorizationInterceptor

  用拦截器实现登录验证功能AuthorizationInterceptor   package com.interceptor;     import com.opensymphony.xwork2.ActionInvocation;   import com.opensymphony.xwork2.interceptor.*;   import com.opensymphony.xwork2.*;   import java.util.*;   public class Authorizat

基于Struts 2拦截器实现细粒度的基于角色的存取控制

引言 Apache Struts 作为最成功的 MVC Web 框架早已得到了广泛的应用,但是其自身也暴露出不少缺点,从而引出了 Struts 2 . Struts 2 摒弃了原来 Struts 1 的设计, 而是转向了 webwork2,并结合 Struts 已有的优点,试图打造出一个集众家所长的完美 Web 框架. Struts 2 因此也具备 webwork2 中的一个非常重要的特性 - 拦截器 (Interceptor) .拦截器会在 Action 执行之前和之后被执行(如下图),是一种

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填写表单,点击登录 浏览器将用户名密码以表单形式发送给服务器 服务器验证用户名密码.成功,进入到下一步.否则要求用户重新认证(第三步) 服务器对用户拥有的权限(角色)判定: 有权限,重定向到origin url; 权限不足,返回状态码403("forbidden"). 从第3步,我们可以知道

MyEclipse+MVC(Struts)实现登录验证(含工程源码)

本文实现了用在MyEclipse下用MVC实现登录验证,适合新手入门,文末提供工程文件源码下载. 1. 新建工程Web Project工程0624mvc 2.选中工程,右键->MyEclipse->Add Struts Capabilities 如图   然后点击finish即可. 3. Form,Action and JSP         找到WebRoot/WEB-INF目录下的struts-config.xml文件,双击打开, 在空白区域,单击右键->New->Form,A

基于 Struts 2 拦截器实现细粒度的基于角色的存取控制

http://www.ibm.com/developerworks/cn/java/j-lo-struts2-rbac/    

struts登录拦截器问题

问题描述 struts登录拦截器问题 问题:登录之后跳转到一个jsp页面,该页面上通过跳转时被登录拦截器拦截. 我想问的是,明明已经登录之后再跳转的,为什么会被登录拦截器拦截呢?刚开始接触这一块,不是很懂,希望能尽快得到大神们的帮助,谢谢谢谢谢谢!! 解决方案 struts实现拦截器的问题STRUTS2 登录拦截器struts2登录拦截器代码实例 解决方案二: what are you 说啥累?不粘代码怎么知道哪里错了? 解决方案三: 拦截器在action动作的前后都会拦截的.估计你的拦截器在i

拦截器问题 谢谢-不进Struts拦截器,麻烦帮解决,谢谢~~~~~

问题描述 不进Struts拦截器,麻烦帮解决,谢谢~~~~~ test.jsp <%@ page contentType="text/html;charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

ajax-springmvc 登录拦截器

问题描述 springmvc 登录拦截器 拦截器起到了作用,跳到了登陆页面,登录页面是通过ajax提交请求给后台的,后台执行完了之后会返回一个map给ajax的success方法,从而进行页面的跳转.可是现在的问题是,后台执行了,但是跳不回前台,map也传回不去,更不说页面的跳转了. 解决方案 SpringMVC 登录拦截器实现springMVC之拦截器SpringMVC拦截器实现登录控制 解决方案二: 小机器人已经给你答案了: 1.不要拦截此跳转: 2.登录在后台执行了后,如果登录成功,直接更