`

spring security 找不到用户信息的原因

阅读更多

折腾了两天,终于解决了,spring security 的用户信息终于可以取出来了.网上的解决办法都没有效果.spring security 2.0.4 把用户信息存入本地线程,通过SecurityContextHolder来获取,第一次请求完成后,则后清空用户信息 如源码:

  1. finally {   
  2.             // This is the only place in this class where SecurityContextHolder.getContext() is called   
  3.             SecurityContext contextAfterChainExecution = SecurityContextHolder.getContext();   
  4.   
  5.             // Crucial removal of SecurityContextHolder contents - do this before anything else.   
  6.             SecurityContextHolder.clearContext();   
  7.   
  8.             request.removeAttribute(FILTER_APPLIED);   
  9. ·········   
  10. }  

因为我的用的是webwork的action跳转页面,所以又是一个请求这样的话,在action中的方法中就无法取得用户信息了,解决办法就是:写一个servlet来取出用户信息,然后跳转到新页面把用户信息传递过去就样就能实现目的.

 

如servlet:

/**
 *
 */
package com.ztl.book3un.usermanager.user.security;

import java.io.IOException;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.opensymphony.xwork.ActionContext;
import com.ztl.book3un.usermanager.domain.UserLogin;

/**
 * @author:李剑
 * @创作时间:2009-5-27
 * @E-mail:lijian_nhy@126.com
 * @说明:
 * @最后一次修改时间:
 * @修改人:
 */
public class LoginToIndex extends HttpServlet
{

 private static final long serialVersionUID = -2695430823076562265L;

 /*
  * (non-Javadoc)
  *
  * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
  *      javax.servlet.http.HttpServletResponse)
  */
 @Override
 protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException
 {
  // 得到当前用户
  //String sessionCode = "abc";//模拟设置
//  String code = (String) request.getAttribute("code");
//  System.out.println(code);
//  if(sessionCode.equals(code)){
//   System.out.println("对不起,你的验证码不正确!");
//  }
  
  
  UserLogin ul = SecurityUserHolder.getUser();
  
  String userName = ul.getUsername();
  String password = ul.getPassword();
  
  //request.setAttribute("ul", ul);
//  request.setAttribute("userName", userName);
//  request.setAttribute("password", password);
  // 跳转到index.jsp页面
  
  String path = request.getContextPath();
  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  /*RequestDispatcher dispatcher = request
    .getRequestDispatcher("/index.ztl?m=login");
  dispatcher.forward(request, response);*/
  response.sendRedirect(basePath+"index.ztl?m=login&userName="+userName+"&password="+password);
 }

 /*
  * (non-Javadoc)
  *
  * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
  *      javax.servlet.http.HttpServletResponse)
  */
 @Override
 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException
 {
  doGet(request, response);
 }
}

 

接下来就是你原来项目的操作了,你应该怎么取值怎么取值了.呵呵.

 

分享到:
评论

相关推荐

    SpringSecurity.pdf

    Spring Security提供了丰富的认证机制,支持多种认证方式,包括但不限于表单认证、LDAP认证、CAS认证等。认证成功后,用户的身份会被标记为已认证,然后系统根据用户的权限来进行授权,授权是指决定一个已认证的用户...

    spring spring security2.5 jar

    5. **异常处理**:当安全规则不满足时,Spring Security会抛出相应的安全异常,如`AccessDeniedException`表示用户无权访问,`AuthenticationException`表示认证失败。这些异常可以被自定义处理,以返回友好的错误...

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...

    Spring Security 3多用户登录实现一

    **Spring Security 3 多用户登录实现详解** Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架,广泛应用于Java EE平台上的安全解决方案。在本文中,我们将深入探讨如何在Spring Security 3中实现...

    springSecurity 实现传参

    Spring Security提供了`UserDetailsService`接口,你可以实现这个接口来从数据库中加载用户信息。 6. **密码编码器**:Spring Security推荐使用`PasswordEncoder`接口,如`BCryptPasswordEncoder`,来确保密码的...

    spring security 4.0.0所需jar包

    在Spring Security 4.0.0中,这些jar包一起工作,提供了一套完整的解决方案,用于实现用户认证(验证用户身份)和授权(决定用户是否允许访问特定资源)。例如,`spring-security-core`负责基本的认证和授权逻辑,`...

    springboot springsecurity动态权限控制

    在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...

    狂神Spring Security静态资源

    在这个名为"狂神Spring Security静态资源"的资料中,我们可以期待学习到关于如何保护Web应用中的静态资源不被未经授权的用户访问。 首先,了解Spring Security的基本概念是必要的。它主要由四个组件构成:...

    spring security3.1.3 和 spring security3.0.0

    在提供的压缩包中,`spring-security-3.0.0.RELEASE.zip`包含了3.0.0版本的源码,而`spring-security-3.1.3.RELEASE-dist.zip`包含了3.1.3版本的jar文件,可以方便地集成到你的项目中。 总的来说,Spring Security...

    基本的spring mvc + spring security实现的登录(无数据库)

    - **无数据库登录**:在没有数据库的情况下,用户信息可能存储在内存中或者通过硬编码实现,这在实际项目中并不常见,仅用于学习和演示目的。 3. **登录流程**: - 用户提交用户名和密码。 - Spring Security的...

    Spring Security 参考手册Spring Security中文版

    如果上面的验证机制不符合你的需求,Spring Security 是一个开放的平台,要实现你 自己的验证机制检查。 为了阅读方便,自己导出的文档,格式为HTML,文件也相对较小。 文档原地址:...

    Spring Security 教程(Spring Security Tutorial)1

    - Spring Security 可以通过 JDBC 从数据库中读取用户信息和权限,这使得认证信息的存储和管理变得灵活。 8. **使用 JPA 及 UserDetailsService**: - 如果应用使用 JPA(Java Persistence API)作为数据访问技术...

    Spring Security.pdf

    Spring Security工程的构建涉及到安全性配置、用户信息管理、权限控制等多个方面。开发者需要根据实际需求,合理设计并实现安全策略,确保应用的安全性。在实现安全策略的过程中,Spring Security的灵活性和扩展性为...

    SpringSecurity源码 SpringSecurity jar包 简单的Demo

    1. 添加Spring Security依赖到项目中,这通常是一个Spring Security的jar包。 2. 配置Spring Security,定义哪些URL需要保护,哪些不需要。 3. 实现登录界面,处理用户提交的登录信息。 4. 定义用户凭证(如内存中的...

    spring security3.0所需要的最精简的jar包

    而`spring-security-config`是配置必不可少的部分,通常都会一起使用。 在实际开发中,除了这些jar包,可能还需要根据具体需求引入Spring Framework的核心库和其他相关的依赖。比如,如果你使用的是Spring Boot,...

    初识 Spring Security - v1.1.pdf

    - **了解前置知识**:为了更好地学习Spring Security,读者需要具备一定的基础知识,包括但不限于AOP(面向切面编程)、Servlet等相关概念;如果熟悉Java语言则更易于理解Spring Security的相关概念和操作。 #### ...

    spring security用户权限项目

    **Spring Security 用户权限项目概述** Spring Security 是一个强大的安全框架,专为 Java 应用程序设计,用于处理身份验证和授权。在这个项目中,它被用来实现用户权限管理,确保只有授权的用户才能访问特定的资源...

    Spring Security 文档

    总的来说,Spring Security 3提供了多种适应不同需求的安全解决方案,从简单的配置文件到完全数据库驱动,甚至对源码的深度定制,为企业级应用的安全管理提供了全面的支持。开发者可以根据项目规模、复杂度以及团队...

    spring security 入门demo

    - `spring-security-mvc-digest-auth` 和 `spring-security-mvc-ldap` 涉及到Spring Security与Spring MVC框架的整合,展示了如何在Web MVC环境中设置安全控制。 在学习这些示例时,我们需要理解Spring Security的...

Global site tag (gtag.js) - Google Analytics