降龙十八掌-第一掌
-
Java 基础语法
-
Java 面向对象
-
Java 常用类详解
-
Java 异常机制
-
Java 集合与数据结构
-
Java IO
-
Java 多线程
-
Java 网络编程
-
Java 注解+反射
-
23 种设计模式
-
正则表达式
-
XML 解析/ JSON 解析
-
Java 10、11、12 新特性
-
AIO、BIO、NIO
原创大约 2 分钟
Java 基础语法
Java 面向对象
Java 常用类详解
Java 异常机制
Java 集合与数据结构
Java IO
Java 多线程
Java 网络编程
Java 注解+反射
23 种设计模式
正则表达式
XML 解析/ JSON 解析
Java 10、11、12 新特性
AIO、BIO、NIO
事务有四个特性:
众所周知,spring-security默认是form表单模式登录的,故我们只要在前端用表单提交即可,回顾我上次umi前端请求处理,代码如下
上一篇文章已经搭好了基本框架,现在进行spring-security结合的讲解
上面一张图是我基于debug模式跑的,有什么不足的地方,请多多指正。
先向大家介绍几个框架的作用,提供官网地址,方便大家详细了解。
结合上一篇文章mybatis的启动过程
String resource = "mybatis.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = factory.openSession();
// 不使用动态代理的情况下
try{
List<User> userList = sqlSession.selectList("com.wyl.mybatis.dao.UserDao.getUserList");
System.out.println("**********"+JSON.toJSON(userList));
}finally {
sqlSession.close();
}
// 使用动态代理的情况下
try{
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
System.out.println("**********"+JSON.toJSON(userList));
}finally {
sqlSession.close();
}
在进行走refresh_token的时候需要UserDetailsService
具体代码
@Autowired
private UserDetailsService userDetailsServiceBean;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.tokenStore(tokenStore()).userDetailsService(userDetailsServiceBean);
}
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
/**
* @Description GlobaException 全局的异常配置
* @Author YiLong Wu
* @Date 2020-03-11 22:28
* @Version 1.0.0
*/
@RestControllerAdvice
public class GlobalException {
/**
* 处理用户名密码错误的异常
* @return
*/
@ExceptionHandler({UnknowUsenameAndPasswordException.class})
@ResponseStatus
public ResponseError unknowUsenameAndPasswordException() {
return new ResponseError(HttpStatus.INTERNAL_SERVER_ERROR.value(),"用户名或密码错误");
}
/**
* 处理权限不足的异常
* @param e
* @return
*/
@ExceptionHandler(AuthorizationException.class)
@ResponseStatus(HttpStatus.FORBIDDEN)
public ResponseError authorizationException(AuthorizationException e) {
return new ResponseError(HttpStatus.FORBIDDEN.value(),"你没有权限访问");
}
/**
* 处理token的异常
* @return
*/
@ExceptionHandler(InvalidTokenException.class)
@ResponseStatus
public ResponseError invalidTokenException() {
return new ResponseError(HttpStatus.INTERNAL_SERVER_ERROR.value(),"不合法的token");
}
/**
* 处理用户账户异常
* @return
*/
@ExceptionHandler(UnknownAccountException.class)
@ResponseStatus
public ResponseError unknownAccountException() {
return new ResponseError(HttpStatus.INTERNAL_SERVER_ERROR.value(),"账户异常");
}
}
如图所示,项目一共分为6层,分别是: