为什么Spring Security InMemoryAuthentication不会对我进行身份验证

时间:2015-03-14 23:50:02

标签: java spring spring-mvc spring-security

我的项目和视图文件中只有以下三个类。没有配置文件。我试图在spring mvc app上配置spring security。

当我将其作为java应用程序运行并在浏览器中访问它时,它会要求输入密码。

我在相应的表单字段中输入用户名和密码,但它没有进行身份验证。

我检查了日志,发现了这一行

Using default security password: 75a836df-d369-4600-aad2-a50567ebd283

当ii使用它时,它成功登录了我。

  

我无法理解这一点。任何人都可以向我解释这个吗?我错过了吗   什么?

package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");


    }
}

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }

}

package hello;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GreetingController {

    @RequestMapping("/greeting")
    private String greeting(@RequestParam(value="name", defaultValue="World", required=false) String name, Model model) {


        model.addAttribute("name", name);

        return "greeting";

    }
}
  

我问为什么它没有使用用户名登录我   “用户”和密码为“密码”

3 个答案:

答案 0 :(得分:2)

我已经解决了这个问题。我必须改变

@EnableWebSecurity

@Configuration
@EnableWebMvcSecurity

SecurityConfig上。

实际上我正在学习Spring框架,我发现有这么多选项,有很多不同的方法可以在互联网上讨论。因此,会出现这样的问题。

答案 1 :(得分:0)

您应该在WebSecurityConfigurerAdapter的实现中覆盖方法configure

    @Override
    protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
        authManagerBuilder.inMemoryAuthentication()
                .withUser("user").password("password").roles("USER");
    }

你所做的是实现的方法configureGlobal,它没有在WebSecurityConfigurerAdapter中呈现,而Spring对此方法一无所知。

答案 2 :(得分:0)

您可以使用以下代码,在您的代码配置方法中缺少

In:
avg_hr.head()

Out:
00:00:00     69.000000
00:00:01     93.750000
00:00:02     93.125000
00:00:03     92.900000
00:00:04     93.222222
00:00:05     93.222222
...
Name: bpm, Length: 253, dtype: float64