基于SpringSecurity+JWT登陆认证开发笔记一详解编程语言

基于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

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论