1.userName
2.password
3.companyId
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String name = auth.getName();
String pwd = auth.getCredentials();
String companyId= ???//How can i set and then get company Id here.
我的问题是如何使用SecurityContextHolder获得额外的登录参数(companyId)?
提取类可能不是弹簧控制器.这就是我使用的原因
SecurityContextHolder而不是HttpSession.
谢谢,
最佳答案
创建简单的SpringSecurityFilter过滤器.使用setDetails方法为用户添加额外的详细信息.
package org.example;
public class CustomDeatilsSecurityFilter extends SpringSecurityFilter {
protected void doFilterHttp(HttpServletRequest request,HttpServletResponse response,FilterChain chain) {
SecurityContext sec = SecurityContextHolder.getContent();
AbstractAuthenticationToken auth = (AbstractAuthenticationToken)sec.getAuthentication();
HashMap
像这样将它添加到Spring Security Filter Chain(这不是web.xml,但类似于applicationContext-security.xml):
ecurityFilter" class="org.example.CustomDeatilsSecurityFilter">
然后在代码中的某处你可以做这样的事情:
MapecurityContextHolder.getContext().getAuthentication.getDetails();
int companyId = info.get("companyId");
Spring Security的基本安装
在web.xml中
aram>
aram-name>patchConfigLocation
aram-name>
aram-value>
classpath:/applicationContext.xml
/WEB-INF/applicationContext-datasource.xml
/WEB-INF/applicationContext-security.xml
aram-value>
aram>
ecurityFilterChainecurityFilterChain
在applicationContext-security.xml中
ecurity"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd">
...
ecurityFilter" class="org.example.CustomDeatilsSecurityFilter">
在项目的pom.xml中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。