`

Spring Security判断用户是否已经登录

阅读更多

方法一、JSP中检查user principal

<c:if test="${pageContext.request.userPrincipal.name != null}">
    <label>
     Hi ${pageContext.request.userPrincipal.name} ! Welcome to our site
    </label>
</c:if>

<c:choose>
  <c:when test="${pageContext.request.userPrincipal.authenticated}">Show something</c:when>
  <c:otherwise>Show something else</c:otherwise>
</c:choose>

方法二、检查角色

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

    <sec:authorize access="hasAnyAuthority('ROLE_ADMIN', 'ROLE_USER')" var="isAuthenticated">
    </sec:authorize>

    <c:out value="${isAuthenticated}"/>

和这个

<sec:authorize access="hasAnyRole('ROLE_ADMIN')">
    <a href="delete/${file.id}">Delete</a>
</sec:authorize>

方法三、 还是查询用户

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
if (!(auth instanceof AnonymousAuthenticationToken)) { 
     // do something...
}

方法四、 使用标签库

<%@taglib uri="http://www.springframework.org/security/tags" prefix="sec"%>
<sec:authorize access="isAuthenticated()">
    <% response.sendRedirect("main"); %>
</sec:authorize>

方法五、 使用注解

需要:<global-method-security secured-annotations="enabled" />

@Secured("ROLE_ADMIN")
@RequestMapping(params = "onlyForAdmins")    
public ModelAndView onlyForAdmins() {
    ....
}

 @PreAuthorize("isAuthenticated()")
 @RequestMapping(params = "onlyForAuthenticated")
 public ModelAndView onlyForAuthenticatedUsers() {
     ....
 }

方法六、 编程

 SecurityContextHolder.getContext().getAuthentication() != null &&
 SecurityContextHolder.getContext().getAuthentication().isAuthenticated() &&
 //when Anonymous Authentication is enabled
 !(SecurityContextHolder.getContext().getAuthentication() 
          instanceof AnonymousAuthenticationToken) 


if (SecurityContextHolder.getContext().getAuthentication().isAuthenticated()) {
  System.out.println("LOGGED IN");
  } else {
  System.out.println("NOT LOGGED IN");
}


if (!SecurityContextHolder.getContext().getAuthentication().getName().
  equals("anonymousUser")) {
  System.out.println("LOGGED IN");
  } else {
  System.out.println("NOT LOGGED IN");
}

 

0
0
分享到:
评论

相关推荐

    Spring Security 3多用户登录实现之九 基于持久化存储的自动登录

    在“Spring Security 3多用户登录实现之九 基于持久化存储的自动登录”这一主题中,我们将探讨如何利用Spring Security来实现多用户登录系统,并通过持久化存储来支持用户的自动登录功能。在这个过程中,我们会涉及...

    SpringSecurity学习总结源代码

    首先,SpringSecurity的核心功能包括用户认证、权限授权、会话管理以及防止常见攻击。其中,用户认证涉及验证用户凭据,如用户名和密码,以确定用户的身份。而权限授权则决定了已认证的用户可以访问哪些资源或执行...

    SpringSecurity笔记,编程不良人笔记

    - 用户提交登录请求,请求被SpringSecurity的过滤器拦截。 - 认证过滤器(如`UsernamePasswordAuthenticationFilter`)提取用户名和密码,并调用`UserDetailsService`进行验证。 - 验证成功后,创建`...

    Spring Security 完整实例

    例如,可以创建一个自定义的访问决策投票器,它查询数据库中的角色和权限关系,以判断用户是否有权限执行操作。 **自定义密码编码器** Spring Security 提供了多种内置的密码编码器,如BCrypt、PBKDF2和SHA-256。...

    springsecurity原理流程图.pdf

    过滤器链中的第一个关键过滤器是AbstractAuthenticationProcessingFilter,该过滤器会判断请求是否需要进行身份验证。 c. 如果请求需要认证,AbstractAuthenticationProcessingFilter会调用attemptAuthentication...

    Spring Boot Security 2.5.8 实现账号、手机号、邮件登录,记住密码等功能

    Spring Security提供了UserDetailsService接口来处理用户信息的检索和验证。开发者可以自定义实现该接口,将用户数据存储在数据库或其他持久化层中。 2. **手机号登录**:为了适应移动互联网的需求,Spring ...

    Spring Security.pdf

    用户授权则发生在身份认证之后,系统根据用户的角色和权限来判断用户能否访问特定资源,只有拥有相应权限的用户才能访问相应的系统资源,否则会被拒绝访问。在用户授权的过程中,系统一般会为不同的用户分配不同的...

    初识 Spring Security - v1.1.pdf

    - **AuthenticationTrustResolver**:用于判断用户是否以匿名方式登录。 ##### 12. **Remember-Me 功能** - **概念**:提供记住用户登录状态的功能,即使用户关闭浏览器后再次访问也能保持登录状态。 - **基于简单...

    springsecurity角色和权限

    你可以自定义实现来处理业务逻辑,判断用户是否有特定的权限。同时,`@PreAuthorize`和`@PostAuthorize`注解可以接受SpEL(Spring Expression Language)表达式,允许在运行时动态检查权限。 9. **Remember Me功能*...

    Spring Security 3 中文 chm

    Spring Security 使用访问决策管理器(Access Decision Manager)和访问决策投票器(Access Decision Voter)来判断用户是否有足够的权限。 3. **过滤器链(Filter Chain)**:Spring Security 的核心是过滤器链,...

    Spring Security UserDetails实现原理详解

    6. `boolean isEnabled()`:判断用户是否启用。 7. `Collection&lt;? extends GrantedAuthority&gt; getAuthorities()`:返回用户具有的权限或角色。 `UserDetailsService`是Spring Security提供用于获取`UserDetails`...

    Spring Security 安全管理

    - **Spring Security 对一个请求的认证过程**:当请求到达时,Spring Security 会通过 Filter Security Interceptor 检查请求是否需要认证。如果需要,它会将请求传递给 AuthenticationManager 进行认证。 - **用户...

    spring security 入门demo

    - `spring-security-openid` 文件可能包含了一个OpenID身份验证的示例,这允许用户使用第三方服务(如Google或Yahoo)进行身份验证,增强了用户体验。 5. **X.509证书认证**: - `spring-security-x509` 演示了...

    spring security 培训ppt

    - 接着调用 `AccessDecisionManager` 进行权限决策,该组件会根据配置的策略(如一票否决、一票通过等)判断用户是否有足够的权限访问资源。 - 如果权限不足,则显示无权限访问的页面;如果权限足够,则允许访问...

    Spring Security OAuth 2.0

    认证是判断用户身份是否合法的过程,用户访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有用户名密码登录、二维码登录、手机短信登录、指纹认证等方式...

    spring security3.0.4 的acl使用例子

    `PermissionEvaluator`用于判断用户是否有权限执行某个操作,而`AclService`是与ACL相关的操作接口,如读取、创建、更新和删除ACL信息。在Spring Security 3.0.4中,可以通过实现`PermissionEvaluator`接口来自定义...

    SpringBoot+SpringSecurity+JWT权限管理练习项目

    在本项目中,JWT用于生成和验证用户的访问令牌,以此来判断用户是否已登录并具有相应的权限。 **4. 整合SpringBoot、SpringSecurity和JWT** 整合这三个组件的过程主要包括以下几个步骤: - **配置SpringBoot**: ...

    spring security权限管理

    Spring Security是Java领域中一个强大的安全框架,用于处理应用程序的安全性问题,如用户认证和授权。在"spring security权限管理"这个主题中,我们将深入探讨如何利用Spring Security来实现复杂而灵活的权限控制。 ...

Global site tag (gtag.js) - Google Analytics