为什么在Spring Security中对“ anonymousUser”进行身份验证?

爱丽儿

这是我的主控制器:

package org.demian.demibox.controllers;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MainController {
    private String getUsername() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth.isAuthenticated())
            return auth.getName();
        else
            return null;
    }
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String showHome() {
        String username = getUsername();
        System.out.println(username);
        if (username == null || username.length() == 0)
            return "welcome";
        return "index";
    }
}

即使我没有登录,也auth.isAuthenticated()总是返回true这是为什么?而何时会auth.isAuthenticated()返回false?anonymousUser如果我未登录,则经过身份验证的用户的名称是;如果我登录,则为用户名。

编辑

这是我的security-context.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <security:authentication-manager>
        <security:authentication-provider>
            <security:jdbc-user-service data-source-ref="dataSource" id="jdbcUserService" />
            <!-- <security:password-encoder ref="passwordEncoder" /> -->
        </security:authentication-provider>
    </security:authentication-manager>
    <security:http use-expressions="true">
        <security:intercept-url pattern="/" access="permitAll" />
        <security:intercept-url pattern="/login" access="permitAll" />
        <security:intercept-url pattern="/redeem" access="permitAll" />
        <security:intercept-url pattern="/redeem_code" access="permitAll" />
        <security:intercept-url pattern="/static/**" access="permitAll" />
        <security:intercept-url pattern="/*" access="isAuthenticated()" />
        <security:intercept-url pattern="/**" access="isAuthenticated()" />
        <security:intercept-url pattern="/**" access="denyAll" />
        <security:form-login login-page="/login" authentication-failure-url="/login?error=true" />
        <security:logout logout-success-url="/" />
        <security:remember-me key="offersAppKey" user-service-ref="jdbcUserService" />
    </security:http>
    <security:global-method-security secured-annotations="enabled" />
    <!-- <bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" /> -->
</beans>

web.xml文件中包含以下几行

<filter>
    <display-name>springSecurityFilterChain</display-name>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我正在通过Maven使用Tomcat 8.0和所有最新的依赖项。

亚历山大·M

默认情况下,这就是spring-security的工作方式。

文档

注意,“匿名认证”的用户和未经认证的用户之间没有真正的概念差异。Spring Security的匿名身份验证只是为您提供了一种更便捷的方式来配置访问控制属性。getCallerPrincipal即使确实存在匿名身份验证对象,对Servlet API调用的调用(例如)仍将返回null SecurityContextHolder

在其他情况下,匿名身份验证很有用,例如,当审核拦截器查询时,SecurityContextHolder以标识哪个主体负责给定操作。如果类知道SecurityContextHolder总是包含一个Authentication对象且从不为null,则可以更强大地编写类

如果需要检查是否为,anonymousUser则可以检查Authentication对象是否AnonymousAuthenticationToken实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果在java spring security 中登录身份验证失败,如何获取anonymousUser 用户名?

来自分类Dev

在Spring Security中定制身份验证

来自分类Dev

Spring Security中的链式身份验证

来自分类Dev

为什么故障处理在Spring Security X.509身份验证中不起作用?

来自分类Dev

使用Spring Security + Spring数据+ MongoDB进行身份验证

来自分类Dev

使用Gmail等Spring Security进行两因素身份验证

来自分类Dev

通过REST端点进行Spring Security身份验证/授权

来自分类Dev

如何在Spring Security中通过email_id或contact_number进行身份验证?

来自分类Dev

在Spring Security中无法通过email_id对用户进行身份验证

来自分类Dev

如何在Spring Security中撤消身份验证令牌?

来自分类Dev

从服务中获取Spring Security身份验证

来自分类Dev

在Spring Security中接收令牌的基本身份验证

来自分类Dev

如何在Spring Security中关闭Websocket的身份验证?

来自分类Dev

在Spring Security中接收令牌的基本身份验证

来自分类Dev

在 Spring Security 中捕获身份验证失败

来自分类Dev

为什么我的Spring Security身份验证不起作用?

来自分类Dev

Tomcat身份验证和Spring Security

来自分类Dev

使用UserDetailsService的Spring Security身份验证

来自分类Dev

Spring Security Rest Basic身份验证

来自分类Dev

身份验证失败的Spring Security Wildfly

来自分类Dev

使用Spring Boot 2和Spring Security 5进行多重身份验证

来自分类Dev

使用Spring Security Oauth2进行两因素身份验证

来自分类Dev

如何使用spring Security通过基于邮件和uid的LDAP对用户进行身份验证?

来自分类Dev

Spring Security:使用HTTP Basic和表单登录进行身份验证

来自分类Dev

如何使用xml配置文件,JAVA,Spring Security使用LDAP对用户进行身份验证

来自分类Dev

使用Spring Security Javaconfig进行基本和基于表单的身份验证

来自分类Dev

使用Spring Security内存身份验证进行内部化

来自分类Dev

使用Spring Security进行手动身份验证并记住我的提供程序

来自分类Dev

使用Spring Security和JavaConfig进行身份验证时出现PartialResultException

Related 相关文章

  1. 1

    如果在java spring security 中登录身份验证失败,如何获取anonymousUser 用户名?

  2. 2

    在Spring Security中定制身份验证

  3. 3

    Spring Security中的链式身份验证

  4. 4

    为什么故障处理在Spring Security X.509身份验证中不起作用?

  5. 5

    使用Spring Security + Spring数据+ MongoDB进行身份验证

  6. 6

    使用Gmail等Spring Security进行两因素身份验证

  7. 7

    通过REST端点进行Spring Security身份验证/授权

  8. 8

    如何在Spring Security中通过email_id或contact_number进行身份验证?

  9. 9

    在Spring Security中无法通过email_id对用户进行身份验证

  10. 10

    如何在Spring Security中撤消身份验证令牌?

  11. 11

    从服务中获取Spring Security身份验证

  12. 12

    在Spring Security中接收令牌的基本身份验证

  13. 13

    如何在Spring Security中关闭Websocket的身份验证?

  14. 14

    在Spring Security中接收令牌的基本身份验证

  15. 15

    在 Spring Security 中捕获身份验证失败

  16. 16

    为什么我的Spring Security身份验证不起作用?

  17. 17

    Tomcat身份验证和Spring Security

  18. 18

    使用UserDetailsService的Spring Security身份验证

  19. 19

    Spring Security Rest Basic身份验证

  20. 20

    身份验证失败的Spring Security Wildfly

  21. 21

    使用Spring Boot 2和Spring Security 5进行多重身份验证

  22. 22

    使用Spring Security Oauth2进行两因素身份验证

  23. 23

    如何使用spring Security通过基于邮件和uid的LDAP对用户进行身份验证?

  24. 24

    Spring Security:使用HTTP Basic和表单登录进行身份验证

  25. 25

    如何使用xml配置文件,JAVA,Spring Security使用LDAP对用户进行身份验证

  26. 26

    使用Spring Security Javaconfig进行基本和基于表单的身份验证

  27. 27

    使用Spring Security内存身份验证进行内部化

  28. 28

    使用Spring Security进行手动身份验证并记住我的提供程序

  29. 29

    使用Spring Security和JavaConfig进行身份验证时出现PartialResultException

热门标签

归档