我有登录参数
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):
然后在代码中的某处你可以做这样的事情:
Map
Spring Security的基本安装
在web.xml中
在applicationContext-security.xml中
在项目的pom.xml中
原文链接:https://www.f2er.com/spring/432639.html