- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为用户提供带有访问 key 的特殊 URL。与简单的匿名用户相比,通过这个特殊 url 访问公共(public)页面的用户应该能够看到一些额外的数据。
我想根据请求中提供的参数给匿名用户一些额外的角色,这样我就可以在我的模板中做这样的事情:
<@sec.authorize ifAnyGranted="ROLE_ADMIN, ROLE_USER, ROLE_INVITED_VISITOR">
...some additional stuff for invited user to see
</@sec.authorize>
OncePerRequestfilter
:
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
if (null != request.getParameter("accessKey")) {
if(isValid(request.getParameter("accessKey"))) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
//how do i add additional roles to authenticated (potentially anonymous) user?
}
}
}
最佳答案
为什么不直接创建一个委托(delegate)给原始的包装类,而是添加几个额外的 GrantedAuthorities:
public class AuthenticationWrapper implements Authentication
{
private Authentication original;
private GrantedAuthority[] extraRoles;
public AuthenticationWrapper( Authentication original, GrantedAuthority[] extraRoles )
{
this.original = original;
this.extraRoles = extraRoles;
}
public GrantedAuthority[] getAuthorities()
{
GrantedAuthority[] originalRoles = original.getAuthorities();
GrantedAuthority[] roles = new GrantedAuthority[originalRoles.length + extraRoles.length];
System.arraycopy( originalRoles, 0, roles, 0, originalRoles.length );
System.arraycopy( extraRoles, 0, roles, originalRoles.length, extraRoles.length );
return roles;
}
public String getName() { return original.getName(); }
public Object getCredentials() { return original.getCredentials(); }
public Object getDetails() { return original.getDetails(); }
public Object getPrincipal() { return original.getPrincipal(); }
public boolean isAuthenticated() { return original.isAuthenticated(); }
public void setAuthenticated( boolean isAuthenticated ) throws IllegalArgumentException
{
original.setAuthenticated( isAuthenticated );
}
}
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
GrantedAuthority extraRoles = new GrantedAuthority[2];
extraRoles[0] = new GrantedAuthorityImpl( "Role X" );
extraRoles[1] = new GrantedAuthorityImpl( "Role Y" );
AuthenticationWrapper wrapper = new AuthenticationWrapper( auth, extraRoles );
SecurityContextHolder.getContext().setAuthentication( wrapper );
关于spring-security - Acegi 安全 : How do i add another GrantedAuthority to Authentication to anonymous user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/283870/
Authentication auth = SecurityContextHolder.getContext().getAuthentication(); Collection roles = aut
还有没有设置List在 Authentication/UserDetailsImpl 对象中?在我的应用程序中,我有两层安全性,一层用于登录(它使用我的自定义登录身份验证器,在我使用 Authenti
我正在阅读有关 Spring Security ACL lib 的内容,我对某些概念有点困惑。关于 SID,它让我感到困惑: ACL_SID allows us to uniquely identif
我开始将 Hibernate 与 SpringSecurity 和 GrantedAuthorities 一起使用。 当查询数据库时,我现在得到了错误的结果。 用户: @Entity @Table p
我是 Spring Security 的新手,在尝试检索与特定用户相关的 **GrantedAuthority 列表时遇到以下问题。 所以我有这个方法可以检索连接的用户(这很好用): protecte
当涉及到 Spring Security 应用程序中的 GrantedAuthority 对象时,我有一个担忧。我正在寻找处理事情的好方法。首先,我试图描述我的担忧,如果有任何事实错误,请毫不犹豫地指
我使用spring安全内核编写了一个简单的hello world项目。基本上我有一个带有一个安全注释的 Controller 。 package springsecuritytest import g
我正在为一个 spring 项目构建一个基于权限的访问控制,它具有分层权限。为此,我将 GrantedAuthority 对象扩展为 Permission。自定义 PermissionVoter 最终
这是我在 spring security 中的 UserDetails 服务: public class UserDetail implements UserDetailsService {
我想将角色视为用户的一个属性,而不是拥有一个独立的角色类,因此我不需要在我的数据库中有一个角色表。但是通用 Spring UserDetails服务通行证GrantedAuthority (即 Col
Spring Security中有概念和实现,比如GrantedAuthority接口(interface)以获得授权/控制访问的权限。 我希望允许的操作,例如 createSubUsers 或 de
我正忙于 Spring Boot 类(class),我应该在其中实现 Spring Security GrantedAuthority 接口(interface)。但由于某种原因,我无法解析该类,即使
我们能否在 acl_sid 中同时执行 Principle 和 GratedAuthority,并在 spring acl security 中为对象授予权限? 最佳答案 是的,我们可以做到。 A
我为用户提供带有访问 key 的特殊 URL。与简单的匿名用户相比,通过这个特殊 url 访问公共(public)页面的用户应该能够看到一些额外的数据。 我想根据请求中提供的参数给匿名用户一些额外的角
我正在尝试了解 Spring 3.0 身份验证。 在下面的代码中,为什么 user.getRole()设置为 GrantedAuthority ? public final UserDetails l
很抱歉用这个问题打扰你,但我最终发现了一个令人头疼的问题,我想知道我是否以错误的方式处理这个问题。 我想映射一个包含 org.springframework.security.core.authori
我是 Spring Boot 和 Spring Security 的新手。我当前的 Spring Boot 版本 1.3.7.RELEASE 有什么问题吗?我该如何解决这个问题? 我的 Securit
我在我的应用程序中使用了 Spring Boot 和 Spring Security。当我从数据库中获取用户时出现以下错误,即使我包含了它的所有依赖项: No converter found capa
我是一名优秀的程序员,十分优秀!