Java 春季安全。不';删除一个截取url后,t重定向到登录页面

Java 春季安全。不';删除一个截取url后,t重定向到登录页面,java,spring,authentication,redirect,spring-security,Java,Spring,Authentication,Redirect,Spring Security,我有以下spring安全配置: <http auto-config="true" pattern="/admin/**" authentication-manager-ref="adminAuthenticationManager"> <form-login login-page="/loginAdmin" login-processing-url="/admin/j_spring_security_check_admin"

我有以下spring安全配置:

<http auto-config="true" pattern="/admin/**" authentication-manager-ref="adminAuthenticationManager">
        <form-login login-page="/loginAdmin" login-processing-url="/admin/j_spring_security_check_admin"
                    default-target-url="/admin"
                    authentication-failure-url="/loginAdminFailed"
                    authentication-success-handler-ref="authAdminSuccessHandler"/>

        <intercept-url pattern="/admin/**"
                       access="ROLE_SUPERADMIN, ROLE_TERMINAL_MODERATOR, ROLE_IMAGE_MODERATOR, ROLE_CAMPAIGN_MODERATOR, ROLE_FINANSIER, ROLE_MODERATOR"/>


        <logout logout-url="/logout" logout-success-url="/loginAdmin"/>
        <port-mappings>
            <port-mapping http="${http.port}" https="${https.port}"/>
        </port-mappings>
    </http>
不调用

当我搬走的时候

<intercept-url pattern="/admin/**"
                       access="ROLE_SUPERADMIN, ROLE_TERMINAL_MODERATOR, ROLE_IMAGE_MODERATOR, ROLE_CAMPAIGN_MODERATOR, ROLE_FINANSIER, ROLE_MODERATOR"/>

从配置中,我看到以下情况: I类型<代码>http://localhost:8080/admin-程序执行转到控制器方法,我看到NullPointer异常。预期结果-重定向到
http://localhost:8080/loginAdmin

你能解释一下发生了什么吗?

为什么我的小改变会有这种副作用

通常有一个称为会话验证的概念用于身份验证。默认情况下,web服务器将在cookie名称
JSESSIONID
中创建唯一的会话id,并将其附加到
HttpResponse
中,并存储在客户端浏览器内存中。如果用户登录到web应用程序,web服务器应使登录页面中的当前会话id无效(/loginadmin,如上代码所示)它应该创建一个新的会话id,并根据从客户端浏览器发送的每个请求在浏览器的cookie名称
JSESSIONID
中追加。web应用程序应该检查会话对于经过身份验证的用户来说是否是新的,然后允许在控制器功能中执行代码

注销后,会话id应无效,并再次分配新的唯一会话id。遵循此技术可防止
会话劫持攻击
。因此,当登录的用户或任何匿名用户试图在没有验证的情况下导航到中间的任何URL时,服务器应该验证该会话是否有效,然后允许执行该功能,否则将重定向到登录页面URL。 因此,在SpringSecurity中,您不需要实现这些与安全相关的功能。它具有此会话验证功能和一些附加功能。只要提到页面的url和它们的用户角色,它就会处理它


在使用spring、struts、JSF等web框架之前,您应该完全了解java servlet。此链接可能很有用

通常有一个称为会话验证的概念。默认情况下,web服务器将在cookie名称
JSESSIONID
中创建唯一的会话id,并将其附加到
HttpResponse
中,并存储在客户端浏览器内存中。如果用户登录到web应用程序,web服务器应使登录页面中的当前会话id无效(/loginadmin,如上代码所示)它应该创建一个新的会话id,并根据从客户端浏览器发送的每个请求在浏览器的cookie名称
JSESSIONID
中追加。web应用程序应该检查会话对于经过身份验证的用户来说是否是新的,然后允许在控制器功能中执行代码

注销后,会话id应无效,并再次分配新的唯一会话id。遵循此技术可防止
会话劫持攻击
。因此,当登录的用户或任何匿名用户试图在没有验证的情况下导航到中间的任何URL时,服务器应该验证该会话是否有效,然后允许执行该功能,否则将重定向到登录页面URL。 因此,在SpringSecurity中,您不需要实现这些与安全相关的功能。它具有此会话验证功能和一些附加功能。只要提到页面的url和它们的用户角色,它就会处理它


在使用spring、struts、JSF等web框架之前,您应该完全了解java servlet。此链接可能很有用

如果用户没有足够的权限查看您刚才要求解释的页面,我只想将用户重定向到登录页面。无论如何:)。如果您的web应用程序具有不同的用户角色,则可以处理403禁止访问拒绝异常。使用任何请求映射url创建另一个控制器,如
/custom403
,并根据需要重定向到您的登录页面,方法是在xml文件中添加另一个标记
Jambuling这对我来说很清楚,但这不是我的问题的原因。如果用户没有足够的权限查看所提到的页面,我只想将用户重定向到登录页面被要求解释这个过程。无论如何:)。如果您的web应用程序具有不同的用户角色,则可以处理403禁止访问拒绝异常。使用任何请求映射url创建另一个控制器,如
/custom403
,并根据需要重定向到您的登录页面,方法是在xml文件中添加另一个标记
Jambuling这对我来说很清楚,但这不是我的问题的原因。如果用户没有足够的权限查看所提到的页面,我只想将用户重定向到登录页面被要求解释这个过程。无论如何:)。如果您的web应用程序具有不同的用户角色,则可以处理403禁止访问拒绝异常。使用任何请求映射url(如
/custom403
)创建另一个控制器,并根据需要重定向到您的登录页面,方法是在xml文件中添加另一个标记
<intercept-url pattern="/admin/**"
                       access="ROLE_SUPERADMIN, ROLE_TERMINAL_MODERATOR, ROLE_IMAGE_MODERATOR, ROLE_CAMPAIGN_MODERATOR, ROLE_FINANSIER, ROLE_MODERATOR"/>