今天很努力 2019-03-05 20:20 采纳率: 100%
浏览 4917
已采纳

SpringSecurity登录的时候一直重定向,回到登录页面

springsecurity3.2

说起来,我这个原本前台是ANGULARJS+HTML写的

但是公司单点登录必须要JSP页面,因为是老系统,html不支持

所以没办法,就写了个JSP来登录

然后我登录上去会报302,而且response里面带location:login.jsp

我确认过用户名密码,没问题,而且我也重写了UserDetailsService

但是根本没有到UserDetailServic这一步,应该是授权的时候就不通过

说实话,对springsecurity不太了解,下面是配置文件,麻烦大神指点!


config-file

<!-- 以下页面不被拦截 -->
    <http pattern="/login_sso.jsp" security="none"></http>
    <http pattern="/css/**" security="none"></http>
    <http pattern="/fonts/**" security="none"></http>
    <http pattern="/images/**" security="none"></http>
    <http pattern="/js/**" security="none"></http>
    <http pattern="/lib/**" security="none"></http>
    <http pattern="/plugins/**" security="none"></http>

    <http use-expressions="false">
        <!-- 拦截规则 -->
        <intercept-url pattern="/**" access="ROLE_USER" />
        <!-- 登录配置  1登陆页面 2登陆成功跳转页面 3登录失败跳转页面 4总是使用默认跳转页面-->
        <form-login login-page="/login_sso.jsp" default-target-url="/index.html" login-processing-url="/j_spring_security_check"
            authentication-failure-url="/login.html" always-use-default-target="true"/> 
        <csrf disabled="true"/>
        <!-- 由于使用了框架页面,所以要进行以下配置 -->
        <headers>
            <frame-options policy="SAMEORIGIN"/>
        </headers>
        <!-- 登出配置 -->
        <logout logout-url="/logout" logout-success-url="/login_sso.jsp"/>
    </http>



login.jsp

<form id="loginForm" name="loginForm" action="/modify/j_spring_security_check" method="post" >
                <input type="text" id="username" name="name"  />
                <input type="password" id="password" name="password" />
                <input value="登录" style="width:100%;" type="button" onclick="document:loginForm.submit()">
            </form>




response信息,这个是向login-processing-url发起请求后的返回信息,直接被重定向回login.jsp了,而且都没到UserDetailService


图片说明

  • 写回答

3条回答 默认 最新

  • 今天很努力 2019-03-06 08:41
    关注

    LZ后来试了一下,应该是路径问题
    在localhost上,项目地址=http://localhost:8080/ POST登录请求url=http://localhost:8080/login 可以正常登录
    可是发布到tomcat上的时候项目自动多了个工程名 ,项目地址变成了http://localhost:8080/project,所以我在提交
    POST请求的时候,http://localhost:8080/login就变成了404,而POST如果添加了项目名,请求url=http://localhost:8080/project/login
    但是这又不是正确的路径,也就是说SPRING SECURITY不识别,我在config里面定义了login-processing-url='/login"也不行,
    最后,改成login-processing-url='/project/login" action="/project/project/login" 这就能正常登录

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题