折腾了两天,终于解决了,spring security 的用户信息终于可以取出来了.网上的解决办法都没有效果.spring security 2.0.4 把用户信息存入本地线程,通过SecurityContextHolder来获取,第一次请求完成后,则后清空用户信息 如源码:
- finally {
-
- SecurityContext contextAfterChainExecution = SecurityContextHolder.getContext();
-
-
- SecurityContextHolder.clearContext();
-
- request.removeAttribute(FILTER_APPLIED);
- ·········
- }
因为我的用的是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);
}
}
接下来就是你原来项目的操作了,你应该怎么取值怎么取值了.呵呵.
分享到:
相关推荐
Spring Security提供了丰富的认证机制,支持多种认证方式,包括但不限于表单认证、LDAP认证、CAS认证等。认证成功后,用户的身份会被标记为已认证,然后系统根据用户的权限来进行授权,授权是指决定一个已认证的用户...
5. **异常处理**:当安全规则不满足时,Spring Security会抛出相应的安全异常,如`AccessDeniedException`表示用户无权访问,`AuthenticationException`表示认证失败。这些异常可以被自定义处理,以返回友好的错误...
SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...
**Spring Security 3 多用户登录实现详解** Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架,广泛应用于Java EE平台上的安全解决方案。在本文中,我们将深入探讨如何在Spring Security 3中实现...
Spring Security提供了`UserDetailsService`接口,你可以实现这个接口来从数据库中加载用户信息。 6. **密码编码器**:Spring Security推荐使用`PasswordEncoder`接口,如`BCryptPasswordEncoder`,来确保密码的...
在Spring Security 4.0.0中,这些jar包一起工作,提供了一套完整的解决方案,用于实现用户认证(验证用户身份)和授权(决定用户是否允许访问特定资源)。例如,`spring-security-core`负责基本的认证和授权逻辑,`...
在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...
在这个名为"狂神Spring Security静态资源"的资料中,我们可以期待学习到关于如何保护Web应用中的静态资源不被未经授权的用户访问。 首先,了解Spring Security的基本概念是必要的。它主要由四个组件构成:...
在提供的压缩包中,`spring-security-3.0.0.RELEASE.zip`包含了3.0.0版本的源码,而`spring-security-3.1.3.RELEASE-dist.zip`包含了3.1.3版本的jar文件,可以方便地集成到你的项目中。 总的来说,Spring Security...
- **无数据库登录**:在没有数据库的情况下,用户信息可能存储在内存中或者通过硬编码实现,这在实际项目中并不常见,仅用于学习和演示目的。 3. **登录流程**: - 用户提交用户名和密码。 - Spring Security的...
如果上面的验证机制不符合你的需求,Spring Security 是一个开放的平台,要实现你 自己的验证机制检查。 为了阅读方便,自己导出的文档,格式为HTML,文件也相对较小。 文档原地址:...
- Spring Security 可以通过 JDBC 从数据库中读取用户信息和权限,这使得认证信息的存储和管理变得灵活。 8. **使用 JPA 及 UserDetailsService**: - 如果应用使用 JPA(Java Persistence API)作为数据访问技术...
Spring Security工程的构建涉及到安全性配置、用户信息管理、权限控制等多个方面。开发者需要根据实际需求,合理设计并实现安全策略,确保应用的安全性。在实现安全策略的过程中,Spring Security的灵活性和扩展性为...
而`spring-security-config`是配置必不可少的部分,通常都会一起使用。 在实际开发中,除了这些jar包,可能还需要根据具体需求引入Spring Framework的核心库和其他相关的依赖。比如,如果你使用的是Spring Boot,...
- **了解前置知识**:为了更好地学习Spring Security,读者需要具备一定的基础知识,包括但不限于AOP(面向切面编程)、Servlet等相关概念;如果熟悉Java语言则更易于理解Spring Security的相关概念和操作。 #### ...
1. 添加Spring Security依赖到项目中,这通常是一个Spring Security的jar包。 2. 配置Spring Security,定义哪些URL需要保护,哪些不需要。 3. 实现登录界面,处理用户提交的登录信息。 4. 定义用户凭证(如内存中的...
**Spring Security 用户权限项目概述** Spring Security 是一个强大的安全框架,专为 Java 应用程序设计,用于处理身份验证和授权。在这个项目中,它被用来实现用户权限管理,确保只有授权的用户才能访问特定的资源...
总的来说,Spring Security 3提供了多种适应不同需求的安全解决方案,从简单的配置文件到完全数据库驱动,甚至对源码的深度定制,为企业级应用的安全管理提供了全面的支持。开发者可以根据项目规模、复杂度以及团队...
- `spring-security-mvc-digest-auth` 和 `spring-security-mvc-ldap` 涉及到Spring Security与Spring MVC框架的整合,展示了如何在Web MVC环境中设置安全控制。 在学习这些示例时,我们需要理解Spring Security的...
Spring Security3中文文档全面而深入地覆盖了Spring Security3的各个方面,从基础知识到高级特性,从理论到实践,都是开发者学习和应用Spring Security3不可或缺的资源。通过阅读和理解这些文档,开发者可以更好地...