`

SecurityContext

    博客分类:
  • ssss
 
阅读更多
/*
* Copyright Huawei Symantec Technologies Co.,Ltd. 2008-2009. All rights reserved.
*
*
*/

package com.huaweisymantec.core.service;

import java.util.Collection;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;

import com.huaweisymantec.omm.domain.system.RoleEnum;

/**
* Security资源获取通用类

*/
public final class SecurityContext {

    private SecurityContext() {

    }

    /**
     * 登陆成功后,得到当前用户的用户名
     *
     * @return String
     */
    public static String getPrincipal() {
        String username = null;
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if(authentication==null){
            return null;
        }
        Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (obj instanceof UserDetails) {
            username = ((UserDetails) obj).getUsername();
        } else {
            username = obj.toString();
        }
        return username;
    }

    /**
     * 登陆成功后,判断当前用户是否为超级管理员
     *
     * @return boolean
     */
    public static boolean isAdmin() {
        Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (obj instanceof UserDetails) {
            Collection<GrantedAuthority> authorities = ((UserDetails) obj).getAuthorities();
            for (GrantedAuthority grantedAuthority : authorities) {
                if (grantedAuthority.getAuthority().equals(RoleEnum.ROLE_ADMIN.name())) {
                    return true;
                }
            }
        }
        return false;
    }
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    kube-flannel.yml

    securityContext: privileged: false capabilities: add: ["NET_ADMIN"] env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: ...

    spring security 参考手册中文版

    9.2.1 SecurityContextHolder,SecurityContext和认证对象 74 获取有关当前用户的信息 75 9.2.2 UserDetailsService 75 9.2.3授予权力 77 9.2.4总结 77 9.3认证 78 9.3.1什么是Spring Security中的认证? 78 9.3.2...

    acegi权限控制学习笔记

    在这个学习笔记中,我们将探讨两个关键点:身份认证成功后的操作以及在多个请求之间共享SecurityContext。 1. Acegi身份认证成功之后的操作 当用户的身份认证成功后,Acegi会触发一个`AuthenticationSuccessEvent`...

    4月15日-5 Pod生命周期管理.pdf

    当我们在4月15日-5 Pod生命周期管理.pdf文件中看到“pod.spec.securityContext”和“pod.spec.containers.securityContext”的描述时,我们关注的是Kubernetes如何在Pod和容器级别提供安全上下文配置。安全上下文是...

    spring+security+11种过滤器介绍.doc

    当请求到达时,它检查session中是否存在SecurityContext,如果存在则将其设置到SecurityContextHolder中,供后续过滤器使用。如果不存在,它会创建一个新的SecurityContext并放入ThreadLocal的SecurityContextHolder...

    Spring Security 3用户登录实现之十 用户切换

    - 认证成功后,Spring Security创建一个`Authentication`对象并存储在`SecurityContext`中。 2. **用户切换**:要实现用户切换,我们需要在用户界面提供一个选择或输入新用户名的功能,然后执行以下操作: - 获取...

    javax-ws java自带webservice实现方式

    Java Web服务(Web Service)是一种基于开放标准的、平台无关的通信协议,它允许不同系统间的应用程序通过网络进行互操作。在Java中,`javax.ws` 包提供了一种内置的方式来实现Web服务,使得开发者可以方便地创建和...

    Spring Security in Action

    SecurityContext 是 Spring Security 中的一个重要概念,表示当前用户的安全上下文。SecurityContext 中包含用户的身份信息、权限信息等。SecurityContext 是通过 SecurityContextHolder 实现的。 五、Spring ...

    Spring_Security3_源码分析

    6. **LogoutFilter分析**:注销过滤器处理用户的退出操作,清除session中的SecurityContext以及可能的cookie信息,确保用户安全退出。 7. **UsernamePasswordAuthenticationFilter分析**:这个过滤器处理基于表单的...

    spring security源码分析.pdf

    - 成功认证后,创建 `Authentication` 对象并保存到 `SecurityContext`。 2. **授权过程**: - 根据 `Authentication` 对象中的角色和权限信息进行访问控制。 - 使用 `AccessDecisionManager` 进行决策。 - ...

    springboot整合jwt整合knife4j.zip

    private SecurityContext securityContext() { return SecurityContext.builder() .securityReferences(defaultAuth()) .forPaths(PathSelectors.regex("/api/.*")) .build(); } List&lt;SecurityReference&gt; ...

    CAS单点登录HTTP协议版本配置指南

    cas.securityContext.serviceProperties.adminRoles=ROLE_ADMIN cas.securityContext.casProcessingFilterEntryPoint.loginUrl=http://sso.ican.org/login cas.securityContext.ticketValidator....

    Spring Security 3.0.1 pdf 中文参考文档

    - **在请求之间保存 SecurityContext:** 保持 SecurityContext 在多个请求之间的持久化。 **5.5 Spring Security 中的访问控制** - **安全和 AOP 建议:** 结合 AOP 实现细粒度的访问控制。 - **安全对象和 ...

    acegi学习指南以及例子

    Acegi的核心组件包括SecurityContext、Authentication、Authorization和FilterChainProxy。SecurityContext存储了当前用户的认证信息,Authentication代表了用户的身份和权限,Authorization则是处理访问控制的部分...

    使用acegi控制用户权限实例

    首先,我们需要理解 Acegi 的核心概念,包括 SecurityContext、Authentication 和 Authorization。 1. SecurityContext:这是 Acegi 中的安全上下文,包含了当前用户的认证信息(Authentication)。SecurityContext...

    springsecurity原理流程图.pdf

    SecurityContextHolder提供了从当前线程访问SecurityContext的方法,SecurityContext则包含了当前用户的Authentication对象。 4. 认证成功后的处理: a. 认证成功后,Spring Security会将认证信息存储在session中...

    Java EE Security (JSR-375) Reference Implementation.zip

    该规范定义了一系列新的API和接口,包括`SecurityContext`、`LoginConfig`、`Role`和`Permission`等,这些都与Java SE中的安全模型相辅相成。 1. **SecurityContext**: 这个接口提供了获取当前安全上下文信息的方法...

    spring-security-core-2.0.5.RELEASE.src

    `org.springframework.security.core.context.SecurityContext`是主要接口,`org.springframework.security.core.context.SecurityContextHolder`提供了获取和设置SecurityContext的方法。 4. **Filter Chain**:...

    基于SpringBoot+SpringSecurity的RBAC管理系统,易读易懂.zip

    - SpringSecurity验证信息,如果成功则创建Authentication对象并放入SecurityContext - 之后的所有请求都会检查这个SecurityContext,判断用户是否已认证和授权 8. 源码阅读与学习: 这个毕业设计项目提供的源...

Global site tag (gtag.js) - Google Analytics