簡體   English   中英

配置spring-security和spring-mvc

[英]configuring spring-security and spring-mvc

我正在嘗試首次配置我的spring-security項目,但是當我嘗試登錄時,收到一條消息:“ ERR_TOO_MANY_REDIRECTS”。 可能在引擎蓋下的某個地方,它再次重定向到管理員,但是在哪里? 這是我的spring-security.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
             xsi:schemaLocation="http://www.springframework.org/schema/security

     http://www.springframework.org/schema/security/spring-security-4.0.xsd
     http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

<http use-expressions="true" >
    <csrf disabled="true"/>
    <intercept-url pattern="/admin" access="hasRole('Admin')" />
    <intercept-url pattern="/" access="permitAll" />
    <intercept-url pattern="/logout" access="permitAll" />

    <access-denied-handler error-page="/403" />

    <form-login login-page='/login' login-processing-url="/login" authentication-failure-url="/login?error=true"
                username-parameter="username" password-parameter="password" />

    <logout logout-url="/logout" logout-success-url="/logoutSuccessful" delete-cookies="JSESSIONID" invalidate-session="true" />

</http>

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="myDataSource"
                           users-by-username-query= "select login, password, 'true' from employee where login=?"
                           authorities-by-username-query= "select login, role from employee where login =?  " />
    </authentication-provider>
</authentication-manager>

<beans:import resource="data-source-cfg.xml"/>
</beans:beans>

控制器類:

@Controller
@RequestMapping("/")
public class HelloController {
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        return "login";
    }

    @RequestMapping(value="/admin", method = RequestMethod.GET)
    public String showAdmin(ModelMap model) {
        return "admin";
    }   


    @RequestMapping(value="/login", method=RequestMethod.GET)
    public String enter(@ModelAttribute("employee") Employee employee, ModelMap model){
        return "redirect:/admin";
    }
...

具有用戶登錄名和角色的表如下所示:

Employee
|id|login   |password   |first_name|last_name|mobile_phone|role   |
|1 |login1  |password1  |name1     |lname1   |phone1      |User   |
|2 |login2  |password2  |name2     |lname2   |phone2      |Admin  |

spring安全版本是4.0.3。 這是我對spring-mvc和spring-security的初次體驗,所以問題可能不大。 怎么了?

問題是您只是重定向到/ login資源上的admin頁面,如果未登錄,它將在該頁面發送人員。由於/ admin需要特定角色,因此如果/ admin需要特定角色,它將嘗試轉到登錄頁面。用戶未登錄,您已將其重定向回到管理頁面,從而創建了一個循環。

您想返回一個視圖,而不是重定向回管理頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM