{"id":230,"date":"2022-03-31T08:22:30","date_gmt":"2022-03-31T00:22:30","guid":{"rendered":"https:\/\/blog.lijiajia.top\/?p=230"},"modified":"2026-06-19T21:29:43","modified_gmt":"2026-06-19T13:29:43","slug":"springsecurity%e6%a1%86%e6%9e%b6%e5%ad%a6%e4%b9%a0%ef%bc%9a%e8%ae%a4%e8%af%81-%e8%ae%be%e7%bd%ae%e7%99%bb%e5%bd%95%e7%9a%84%e7%94%a8%e6%88%b7%e5%90%8d%e5%92%8c%e5%af%86%e7%a0%81%e4%ba%94","status":"publish","type":"post","link":"https:\/\/blog.ttwow.top\/?p=230","title":{"rendered":"SpringSecurity\u6846\u67b6\u5b66\u4e60\uff1a\u7528\u6237\u8ba4\u8bc1 &#8211; \u8bbe\u7f6e\u767b\u5f55\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801(\u4e94)"},"content":{"rendered":"<h3>\u51c6\u5907\uff1a<\/h3>\n<h3>\u7248\u672c\u4fe1\u606f<\/h3>\n<pre><code class=\"language-xml\">&lt;parent&gt;\n        &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n        &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n        &lt;version&gt;2.2.1.RELEASE&lt;\/version&gt;\n        &lt;relativePath\/&gt; &lt;!-- lookup parent from repository --&gt;\n    &lt;\/parent&gt;\n    &lt;groupId&gt;com.example&lt;\/groupId&gt;\n    &lt;artifactId&gt;springsecuritydemo01&lt;\/artifactId&gt;\n    &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\n    &lt;name&gt;springsecuritydemo01&lt;\/name&gt;\n    &lt;description&gt;springsecuritydemo01&lt;\/description&gt;\n    &lt;properties&gt;\n        &lt;java.version&gt;1.8&lt;\/java.version&gt;\n    &lt;\/properties&gt;<\/code><\/pre>\n<h3>jar\u5305<\/h3>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-security&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;<\/code><\/pre>\n<h3>\u63a7\u5236\u5c42<\/h3>\n<pre><code class=\"language-java\">@RestController\n@RequestMapping(&quot;\/test&quot;)\npublic class TestController {\n\n    @GetMapping(&quot;\/hello&quot;)\n    public String hello(){\n        return &quot;hello security&quot;;\n    }\n}\n<\/code><\/pre>\n<h2>\u7b2c\u4e00\u79cd\uff1a\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6<\/h2>\n<pre><code class=\"language-markdown\">spring.security.user.name=test\nspring.security.user.password=test<\/code><\/pre>\n<h2>\u7b2c\u4e8c\u79cd\uff1a\u901a\u8fc7\u914d\u7f6e\u7c7b<\/h2>\n<pre><code class=\"language-java\">@Configuration\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n\n    @Override\n    protected void configure(AuthenticationManagerBuilder auth) throws Exception {\n\n        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();\n        String password = passwordEncoder.encode(&quot;test123&quot;);\n\n        auth.inMemoryAuthentication().withUser(&quot;test&quot;).password(password).roles(&quot;admin&quot;);\n    }\n\n    @Bean\n    PasswordEncoder passwordEncoder(){\n        return new BCryptPasswordEncoder();\n    }\n}<\/code><\/pre>\n<h2>\u7b2c\u4e09\u79cd\uff1a\u81ea\u5b9a\u4e49\u7f16\u5199\u5b9e\u73b0\u7c7b<\/h2>\n<p>\u7b2c\u4e00\u6b65 \u521b\u5efa\u914d\u7f6e\u7c7b\uff0c\u8bbe\u7f6e\u4f7f\u7528\u54ea\u4e2auserDetailService\u5b9e\u73b0\u7c7b<\/p>\n<pre><code class=\"language-java\">@Configuration\npublic class SecurityConfigDiy extends WebSecurityConfigurerAdapter {\n\n    @Autowired\n    private UserDetailsService userDetailsService;\n\n    @Override\n    protected void configure(AuthenticationManagerBuilder auth) throws Exception{\n        auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());\n    }\n\n    @Bean\n    PasswordEncoder passwordEncoder(){\n        return new BCryptPasswordEncoder();\n    }\n}\n<\/code><\/pre>\n<p>\u7b2c\u4e8c\u6b65 \u7f16\u5199\u5b9e\u73b0\u7c7b\uff0c\u8fd4\u56deUser\u5bf9\u8c61\uff0cUser\u5bf9\u8c61\u6709\u7528\u6237\u540d\u5bc6\u7801\u548c\u64cd\u4f5c\u6743\u9650<\/p>\n<pre><code class=\"language-java\">@Service(&quot;userDetailsService&quot;)\npublic class MyUserDetailService implements UserDetailsService {\n\n    @Override\n    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {\n\n        List&lt;GrantedAuthority&gt; authorityList = AuthorityUtils.commaSeparatedStringToAuthorityList(&quot;admin&quot;);\n\n        return new User(&quot;test&quot;,new BCryptPasswordEncoder().encode(&quot;123&quot;),authorityList);\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u51c6\u5907\uff1a \u7248\u672c\u4fe1\u606f &lt;parent&gt; &lt;groupId&gt;org.springframew [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[125],"tags":[72],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-java-backend","tag-springsecurity"],"_links":{"self":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=230"}],"version-history":[{"count":1,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/230\/revisions"}],"predecessor-version":[{"id":2096,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/230\/revisions\/2096"}],"wp:attachment":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}