{"id":231,"date":"2022-03-31T08:46:54","date_gmt":"2022-03-31T00:46:54","guid":{"rendered":"https:\/\/blog.lijiajia.top\/?p=231"},"modified":"2026-06-19T21:30:30","modified_gmt":"2026-06-19T13:30:30","slug":"springsecurity%e6%a1%86%e6%9e%b6%e5%ad%a6%e4%b9%a0%ef%bc%9a%e7%94%a8%e6%88%b7%e8%ae%a4%e8%af%81-%e6%9f%a5%e8%af%a2%e6%95%b0%e6%8d%ae%e5%ba%93%e5%85%ad","status":"publish","type":"post","link":"https:\/\/blog.ttwow.top\/?p=231","title":{"rendered":"SpringSecurity\u6846\u67b6\u5b66\u4e60\uff1a\u7528\u6237\u8ba4\u8bc1 &#8211; \u67e5\u8be2\u6570\u636e\u5e93(\u516d)"},"content":{"rendered":"<h2>\u51c6\u5907\uff1a<\/h2>\n<h3>sql\u6570\u636e<\/h3>\n<pre><code class=\"language-sql\">CREATE TABLE <code>users<\/code> (\n  <code>id<\/code> int NOT NULL,\n  <code>username<\/code> varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,\n  <code>password<\/code> varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,\n  PRIMARY KEY (<code>id<\/code>)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;<\/code><\/pre>\n<pre><code class=\"language-sql\">INSERT INTO <code>users<\/code> VALUES (1, &#039;lucy&#039;, &#039;123&#039;);\nINSERT INTO <code>users<\/code> VALUES (2, &#039;tom&#039;, &#039;456&#039;);<\/code><\/pre>\n<h3>pom\u6587\u4ef6<\/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;\n&lt;!--        mybatis-plus--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;com.baomidou&lt;\/groupId&gt;\n            &lt;artifactId&gt;mybatis-plus-boot-starter&lt;\/artifactId&gt;\n            &lt;version&gt;3.0.5&lt;\/version&gt;\n        &lt;\/dependency&gt;\n&lt;!--        mysql--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;mysql&lt;\/groupId&gt;\n            &lt;artifactId&gt;mysql-connector-java&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n&lt;!--        lombok\u7b80\u5316\u5b9e\u4f53\u7c7b--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n            &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;<\/code><\/pre>\n<h3>properties\u914d\u7f6e\u6587\u4ef6<\/h3>\n<pre><code class=\"language-markdown\">spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver\nspring.datasource.url=jdbc:mysql:\/\/localhost:3306\/test?serverTimezone=GMT%2B8\nspring.datasource.username=root\nspring.datasource.password=root<\/code><\/pre>\n<h3>\u5b9e\u4f53\u7c7b<\/h3>\n<pre><code class=\"language-java\">@Data\npublic class Users {\n\n    private Integer id;\n    private String username;\n    private String password;\n\n}\n<\/code><\/pre>\n<h3>mapper\u626b\u63cf<\/h3>\n<pre><code class=\"language-java\">@SpringBootApplication\n@MapperScan(&quot;com.example.springsecuritydemo01.mapper&quot;)\npublic class Springsecuritydemo01Application {\n\n    public static void main(String[] args) {\n        SpringApplication.run(Springsecuritydemo01Application.class, args);\n    }\n\n}<\/code><\/pre>\n<h2>UsersMapper<\/h2>\n<p>\u6dfb\u52a0@Repository\u6ce8\u89e3\u9632\u6b62@Autowired\u6ce8\u5165\u65f6\u98d8\u7ea2\uff0c\u53ef\u4e0d\u52a0<\/p>\n<pre><code class=\"language-java\">@Repository\npublic interface UsersMapper extends BaseMapper&lt;Users&gt; {\n\n}<\/code><\/pre>\n<h2>\u914d\u7f6e\u7c7b<\/h2>\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}<\/code><\/pre>\n<h2>\u6d4b\u8bd5Controller<\/h2>\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}<\/code><\/pre>\n<h2>MyUserDetailService<\/h2>\n<pre><code class=\"language-java\">@Service(&quot;userDetailsService&quot;)\npublic class MyUserDetailService implements UserDetailsService {\n\n    @Autowired\n    private UsersMapper usersMapper;\n\n    @Override\n    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {\n\n        QueryWrapper&lt;Users&gt; wrapper = new QueryWrapper&lt;&gt;();\n        wrapper.eq(&quot;username&quot;,username);\n        Users users = usersMapper.selectOne(wrapper);\n        if(users == null){\n            throw new UsernameNotFoundException(&quot;\u7528\u6237\u540d\u4e0d\u5b58\u5728!&quot;);\n        }\n        List&lt;GrantedAuthority&gt; authorityList = AuthorityUtils.commaSeparatedStringToAuthorityList(&quot;admin&quot;);\n\n        return new User(users.getUsername(),new BCryptPasswordEncoder().encode(users.getPassword()),authorityList);\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u51c6\u5907\uff1a sql\u6570\u636e CREATE TABLE users ( id int NOT NULL, usernam [&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-231","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\/231","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=231"}],"version-history":[{"count":1,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/231\/revisions"}],"predecessor-version":[{"id":2101,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=\/wp\/v2\/posts\/231\/revisions\/2101"}],"wp:attachment":[{"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ttwow.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}