基于SpringSecurity+JWT登陆认证开发笔记一
相关视频地址:https://www.bilibili.com/video/BV1kf4y1y78C?p=2
1建立新项目
初始配置
当我们创建好工程之后首先要做的是要写出基本的登录页面
新建一个控制器 HomeController
package com.example.login.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/index")
public String index(){
return "index";
}
@GetMapping("/system/user")
public String userList(){
return "user";
}
@GetMapping("/system/role")
public String roleList(){
return "role";
}
@GetMapping("/system/menu")
public String menuList(){
return "menu";
}
@GetMapping("/system/order")
public String orederList(){
return "order";
}
}
再resources/template目录下创建出对应的文件
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body><head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h1>
用户登录
</h1>
<br>
<a href="/system/user">
用户管理
</a>
<br>
<a href="/system/menu">
目录管理
</a>
<br>
<a href="/system/role">
角色管理
</a>
<br>
<a href="/system/order">
订单管理
</a>
<a href="/logout">
退出
</a>
</body>
</html>
仅仅是做个简单的页面又来测试
其他的html文件都差不多以menu.html为例
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>menu</title>
</head>
<body>
<h1>目录页面</h1>
</body>
</html>
简单写写能够区分出是那个页面即可
接下来需要我们自定义出一个login页面
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
<script src="https://cdn.staticfile.org/jquery/1.12.3/jquery.min.js"></script>
</head>
<body>
<h1>实训管理系统</h1>
<form action="/login" method="post">
<span>用户账号</span><input type="txt" name="username" id="userid"/><br>
<span>用户密码</span><input type="password" name="passwd" id="userpasswd"/><br>
<input type="submit" value="登录">
</form>
</body>
</html>
接下来对于页面进行配置
新建目录config.security
在该目录下建立SecurityConfig文件
package com.example.login.config.security;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity)throws Exception{
httpSecurity.formLogin()
.loginPage("/login.html")//确定自定义的登录页
.loginProcessingUrl("/login")//确定访问时的地址
.usernameParameter("username")//与login上传的username和password相对应
.passwordParameter("password")
.defaultSuccessUrl("/index")//认证成功之后进入的页面
.failureUrl("/login.html")//失败的页面
.and()
.authorizeRequests()//对于权限的配置
.antMatchers("/login.html","/login")
.permitAll()//login页面对于所有角色开放
.antMatchers("/order")
.hasAnyAuthority("ROLE_user","ROLE_admin")//对于admin与user开放
.antMatchers("/system/user","system/role","system/menu")
.hasAnyRole("admin")//对admin开放
.anyRequest().authenticated()
.and()
.csrf().disable();
httpSecurity.logout().logoutUrl("/logout");//退出页面
}
@Override
protected void configure(AuthenticationManagerBuilder auth)throws Exception{
//未连接数据库,进行内存认证
auth.inMemoryAuthentication()
.withUser("user")
.password(bCryptPasswordEncoder().encode("123456"))
.roles("user")
.and()
.withUser("admin")
.password(bCryptPasswordEncoder().encode("123456"))
.roles("admin")
.and()
.passwordEncoder(bCryptPasswordEncoder());
}
public BCryptPasswordEncoder bCryptPasswordEncoder(){
return new BCryptPasswordEncoder();
}
}
页面可以说是十分简陋,不过基础的登录功能已经实现了
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17793.html