相关教程:
本教程整合环境: java8 maven redis(集群)
开发工具: idea
版本: springboot 1.5.15.RELEASE
注:
1.本教程数据操作是模拟数据库操作,并没有真正进行持久化,自行修改即可。
2.角色权限验证未实现,只实现基本的登录验证,自行扩展即可。
项目结构:
pom.xml:
4.0.0
webapp
springboot-shiro
0.0.1-SNAPSHOT
jar
springboot-shiro
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
1.5.15.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.apache.shiro
shiro-spring
1.3.2
org.springframework.boot
spring-boot-starter-data-redis
org.projectlombok
lombok
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
application.yml:
server:
port: 1002
spring:
redis:
cache:
clusterNodes: 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384
password: jiuxxxxxxx
commandTimeout: 5000
User.java:
packagewebapp.model;importlombok.Data;/*** Created by Administrator on 2018/9/5.*/@Datapublic classUser {privateLong id;privateString userName;privateString password;
}
UserService.java:
packagewebapp.service;importwebapp.model.User;/*** Created by Administrator on 2018/9/5.*/
public interfaceUserService {
User findOneByUserName(String userName);
}
UserServiceImpl.java:
packagewebapp.service.impl;importorg.springframework.stereotype.Service;importwebapp.model.User;importwebapp.service.UserService;/*** Created by Administrator on 2018/9/5.*/@Servicepublic class UserServiceImpl implementsUserService {
@OverridepublicUser findOneByUserName(String userName) {
User user= newUser();
user.setId(1L);
user.setUserName("007少侠");
user.setPassword("123456");returnuser;
}
}
UserController.java:
packagewebapp.controller;importorg.apache.shiro.SecurityUtils;importorg.apache.shiro.authc.UsernamePasswordToken;importorg.apache.shiro.session.Session;importorg.apache.shiro.subject.PrincipalCollection;importorg.apache.shiro.subject.Subject;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.RedisTemplate;import org.springframework.web.bind.annotation.*;importwebapp.service.UserService;importjavax.annotation.Resource;importjava.io.Serializable;/*** Created by Administrator on 2018/9/5.*/@RestController
@RequestMapping("/core/user")public classUserController {
@AutowiredprivateUserService userService;/*** 登录
*@param*@return
*/@GetMapping("/login")publicString login(String userName, String password) {
System.out.println("登录" +userName);
Subject subject=SecurityUtils.getSubject();
UsernamePasswordToken token= newUsernamePasswordToken(userName, password);
subject.login(token);
Session session=subject.getSession();
Serializable sessionId=session.getId();
System.out.println("登录成功 -> " +sessionId);return userName + "[" + sessionId + "]";
}
@GetMapping("/logout")publicString logout() {
SecurityUtils.getSubject().