java - 如何使用Spring Security阻止未经授权的用户?

标签 java spring spring-mvc spring-security

我是 SpringSecurity 的新手。

这是我的 Spring-security-Context.xml 文件

<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
                        http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security 
                        http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <http auto-config="true" path-type="ant">
        <form-login login-page="/jack/login" authentication-failure-url="/jack/login" default-target-url="/jack/home"  />

        <intercept-url pattern="/themes/**" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" />
        <intercept-url pattern="/js/**" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" />
        <intercept-url pattern="/jack/images/**" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" />
        <intercept-url pattern="/jack/resources/**" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" />
        <intercept-url pattern="/jack/**/*.png" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" />
        <intercept-url pattern="/jack/**/*.jpg" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" /> 
        <intercept-url pattern="/jack/upload-users" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/jack/login" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none" />
        <intercept-url pattern="/jack/logincheck" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/jack/logout" access="IS_AUTHENTICATED_ANONYMOUSLY" filters="none"/>
        <intercept-url pattern="/jack/sessionExpire" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/jack/**" access="IS_AUTHENTICATED_REMEMBERED" />
        <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <security:logout logout-url="/jack/logout"
            logout-success-url="/jack/login" invalidate-session="true" />
        <session-management invalid-session-url="/jack/logout" >
                <concurrency-control max-sessions="1" error-if-maximum-exceeded="false"  expired-url="/jack/logout"/>               
        </session-management>
        <security:custom-filter ref="expiredSessionFilter" after="REMEMBER_ME_FILTER"/>
    </http>




    <beans:bean id="expiredSessionFilter" class="com.jack.web.filter.ExpiredSessionFilter">
    </beans:bean>




    <!-- Authentication providers -->
     <beans:bean id="customAuthenticationProvider" class="com.jack.security.provider.CustomAuthenticationProvider" > 
        <!-- <security:custom-authentication-provider />  -->
        <!-- <beans:property name="userDetailsService"  ref="userDetailsService"/>  -->
    </beans:bean>


    <authentication-manager>
        <authentication-provider ref="customAuthenticationProvider" />
    </authentication-manager>

</beans:beans>

案例1: 在 web.xml 中 jack 是 springcontext 名称

security-context.xmljack 的模式类似于 /jack/login

当我给出像

这样的 URL 时
localhost:8080/project/jack/login

这个 Spring 安全性非常好

案例2: 在 web.xml 中 xxx 是 springcontext 名称

在 security-context.xml 中 jack 的模式类似于 /jack/login

我不会更改 securitycontext.xml 中的任何内容

当我付出

localhost:8080/project/xxx/login

spring security 允许用户进入我的应用程序。

注销后,如果用户复制粘贴主页 url 则意味着 spring security 不将用户重定向到登录页面。

如何将用户重定向到 spring 登录页面或者我还有其他选择吗?

最佳答案

尝试在拦截 URL 模式中使用项目,而不是使用 ** 来代替 jack,然后使用您想要限制的其余 URL。

例如。相反,/jack/upload-users 使用/project/**/upload-users

另请注意,IS_AUTHENTICATED_ANONYMOUSLY 用于允许用户访问,即使用户未在应用程序中进行身份验证。

希望这对您有帮助。干杯。

关于java - 如何使用Spring Security阻止未经授权的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711641/

相关文章:

带有反射和字符串的 Java 拼图

Java 检查扫描仪是否仍然连接

java - spring 配置文件和 web.xml 的确切位置在哪里?

spring hibernate事务无法提交

java - 不从实体开始学习 Spring Roo

spring-mvc - Thymeleaf错误消息优化

java - 即使启用 CORS,POST 也会被阻止

Java继承和this关键字

java - 默认情况下,Spring 是否使用工厂模式?

java - 没有 @EnableAutoConfiguration 的 Spring Actuator 指标存在问题