这篇文章主要介绍了基于springboot整合oauth2实现token 认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
session和token的区别:
session是空间换时间,而token是时间换空间。session占用空间,但是可以管理过期时间,token管理部了过期时间,但是不占用空间.
sessionid失效问题和token内包含。
session基于cookie,app请求并没有cookie 。
token更加安全(每次请求都需要带上)
oauth2 密码授权流程
在oauth2协议里,每一个应用都有自己的一个clientid和clientsecret(需要去认证方申请),所以一旦想通过认证,必须要有认证方下发的clientid和secret。
1. pom
org.springframework.boot
spring-boot-starter-security
org.springframework.security.oauth
spring-security-oauth2
2. userdetail实现认证第一步
myuserdetailsservice.java
@autowired
private passwordencoder passwordencoder;
/**
* 根据进行登录
* @param username
* @return
* @throws usernamenotfoundexception
*/
@override
public userdetails loaduserbyusername(string username) throws usernamenotfoundexception {
log.info("登录用户名:"+username);
string password = passwordencoder.encode("123456");
//user三个参数 (用户名+密码+权限)
//根据查找到的用户信息判断用户是否被冻结
log.info("数据库密码:"+password);
return new user(username,password, authorityutils.commaseparatedstringtoauthoritylist("admin"));
}
3. 获取token的控制器
@restcontroller
public class oauthcontroller {
@autowired
private clientdetailsservice clientdetailsservice;
@autowired
private author