深入探讨Web应用的认证与授权机制
1. 访问角色信息
在Web应用的安全机制中,容器管理认证和集成认证库的一个显著区别在于对用户角色信息的访问方式。在容器管理认证中,角色信息可通过 HttpServletRequest 获取,而集成认证库时则需要额外的操作。
为了在动作中访问用户角色,采用了基于注解的方法。定义了一个标记注解 @AcegiPrincipal ,该注解用于只有一个 PermissionedUser 类型参数的设置方法。注解类的定义如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AcegiPrincipal {
}
同时,有一个匹配的拦截器会使用反射查找带有该标记注解的方法。若找到,会使用Acegi安全上下文中的用户调用设置方法。由于我们只关注用户是否已注册,不关心具体角色,所以会从 Authentication 对象中获取主体并分配给动作,而不包含角色信息。 getPrincipal() 方法返回的对象类型与 UserServiceImpl 服务中 loadUserByUsername() 方法返回的对象类型相同,即 PermissionedUser 类。
以下是 AcegiIn
超级会员免费看
订阅专栏 解锁全文
836

被折叠的 条评论
为什么被折叠?



