Skip to content

Commit d0ec773

Browse files
committed
4.学习 springboot集成Shiro 加密算法 注解
1 parent e95d8aa commit d0ec773

8 files changed

Lines changed: 64 additions & 20 deletions

File tree

readme.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
# MySpringBoot
2-
2018-02-05
3-
很开心,有好的资料,好的项目代码供我学习参考,非常感谢很多无私奉献的教程,
4-
你们的殷勤奉献,没齿难忘。
2+
2018-02-05----
3+
声明:资料仅供学习使用,严禁任何商业用途。造福学者,做一个无声的媒介。
4+
很开心,有好的资料,好的项目代码供我学习参考,非常感谢很多无私奉献的教程,
5+
你们的殷勤奉献,没齿难忘。
56
1.项目教程地址:http://acheng1314.cn/front/post/412
67
2.学习资料一:http://blog.csdn.net/ityouknow/article/details/70139667
7-
后续待更新,睡觉咯
8+
后续待更新,
9+
2018-02-07----
10+
理解 shiro
11+
Shiro的核心部分是SecurityManager,它负责安全认证与授权。Shiro本身已经实现了所有的细节,用户可以完全把它当做一个黑盒来使用。SecurityUtils对象,本质上就是一个工厂类似Spring中的ApplicationContext。Subject是初学者比较难于理解的对象,很多人以为它可以等同于User,其实不然。Subject中文翻译:项目,而正确的理解也恰恰如此。
12+
它是你目前所设计的需要通过Shiro保护的项目的一个抽象概念。通过令牌(token)与项目(subject)的登陆(login)关系,Shiro保证了项目整体的安全。
13+
框架解析:https://www.cnblogs.com/learnhow/p/5694876.html

src/main/java/acheng1314/cn/controller/api/SysUserApi.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ public Object getGoodsList() {
3030
if (null != userList && userList.isEmpty()) return GsonUtils.toJsonObjStr(null, ResponseCode.EMPTY, null);
3131
return GsonUtils.toJsonObjStr(userList, ResponseCode.OK, "获取数据成功!");
3232
}
33-
33+
/**
34+
* 教程资料:
35+
* 常见swagger注解一览与使用
36+
*最常用的5个注解
37+
* @Api:修饰整个类,描述Controller的作用
38+
* @ApiOperation:描述一个类的一个方法,或者说一个接口
39+
* @ApiParam:单个参数描述
40+
* @ApiModel:用对象来接收参数
41+
* @ApiProperty:用对象接收参数时,描述对象的一个字段
42+
*
43+
* 例子:
44+
@ApiParam(value = "token", required = true) @RequestParam String token
45+
Web前端/移动端HTTP请求方式:直接把参数附带到URL后面,或者用AJAX方法,表单提交。
46+
*/
3447

3548
}

src/main/java/acheng1314/cn/controller/endWeb/SysMainController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@
2525
@Api(description = "控制后端页面导航,后端文件上传控制")
2626
public class SysMainController {
2727

28+
// @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
29+
// 该注解将HTTP Get 映射到 特定的处理方法上。
2830
@GetMapping(value = "/index", produces = MediaType.TEXT_HTML_VALUE)
2931
@ApiOperation(value = "后端主页框架", notes = "后端主页框架")
30-
public String endMain(@ApiParam(hidden = true) ModelMap map
31-
, @ApiParam(hidden = true) ShiroHttpServletRequest request) {
32+
public String endMain(@ApiParam(hidden = true) ModelMap map, @ApiParam(hidden = true) ShiroHttpServletRequest request) {
3233
Object user = request.getSession().getAttribute("userInfo");
3334
map.put("user", user);
3435
return "end/index";

src/main/java/acheng1314/cn/dao/UserDao.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
/**
1515
* Created by pc on 2017/8/11.
16+
* Spring的注解形式:@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。
1617
*/
1718
@Repository("userDao")
1819
public interface UserDao extends BaseMapper<User> {

src/main/java/acheng1314/cn/shiro/MyCredentialsMatcher.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package acheng1314.cn.shiro;
22

3-
import acheng1314.cn.service.UserServiceImpl;
43
import org.apache.shiro.authc.AuthenticationInfo;
54
import org.apache.shiro.authc.AuthenticationToken;
65
import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;
7-
import org.springframework.beans.factory.annotation.Autowired;
86

97
/**
108
* Created by cheng on 17/5/16.
@@ -24,9 +22,10 @@ public class MyCredentialsMatcher extends SimpleCredentialsMatcher {
2422
@Override
2523
public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
2624

25+
2726
// try {
2827
//
29-
// //从ShiroRealm传递过来的UsernamePasswordToken
28+
//从ShiroRealm传递过来的UsernamePasswordToken
3029
// UsernamePasswordToken user = (UsernamePasswordToken) token;
3130
// String userPass = new String(user.getPassword());
3231
// userPass = userPass.toLowerCase(); //将大写md5转换为小写md5

src/main/java/acheng1314/cn/shiro/PermissionUtil.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,46 @@
55

66
/**
77
* Created by cheng on 17/5/18.
8+
* 权限列表中心
89
*/
910
public class PermissionUtil {
10-
private final static String POST_CENTER = "文章中心"
11-
, MSG_CENTER = "留言管理"
12-
, MEDIA_CENTER = "多媒体管理"
13-
, API_CENTER = "API系统"
14-
, USER_CENTER = "用户管理"
15-
, WEXIN_CENTER = "微信管理"
16-
, SYSTEM_CENTER = "服务器中心";
11+
private final static String POST_CENTER = "文章中心",
12+
MSG_CENTER = "留言管理",
13+
MEDIA_CENTER = "多媒体管理",
14+
API_CENTER = "API系统",
15+
USER_CENTER = "用户管理",
16+
WEXIN_CENTER = "微信管理",
17+
DATA_CENTER = "数据管理",
18+
SYSTEM_CENTER = "服务器中心";
1719

1820
/**
1921
* 获取管理员权限
20-
* @return 返回管理员权限集合
22+
*
23+
* @return 返回管理员权限集合
2124
*/
22-
public static List<String> getAdminPer(){
25+
public static List<String> getAdminPer() {
2326
List<String> list = new ArrayList<>();
2427
list.add(POST_CENTER);
2528
list.add(MSG_CENTER);
2629
list.add(MEDIA_CENTER);
2730
list.add(API_CENTER);
2831
list.add(USER_CENTER);
2932
list.add(WEXIN_CENTER);
33+
list.add(DATA_CENTER);
3034
list.add(SYSTEM_CENTER);
3135
return list;
3236
}
3337

34-
public static List<String> getOtherPer(){
38+
/**
39+
* 获取其他管理员的权限
40+
* @return
41+
*/
42+
public static List<String> getOtherPer() {
3543
List<String> list = new ArrayList<>();
3644
list.add(POST_CENTER);
3745
list.add(MSG_CENTER);
3846
list.add(MEDIA_CENTER);
47+
list.add(DATA_CENTER);
3948
return list;
4049
}
4150
}

src/main/java/acheng1314/cn/shiro/ShiroRealm.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ShiroRealm extends AuthorizingRealm {
2525
*/
2626
@Override
2727
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
28+
//使用用户的登陆信息创建令牌
2829
UsernamePasswordToken user = (UsernamePasswordToken) token;
2930
LogE.getInstance(ShiroRealm.class).logOutLittle("开始登录====>\n用户为:" + user.getUsername());
3031

src/main/java/acheng1314/cn/util/EncryptUtils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,22 @@
55
import java.util.Map;
66
import java.util.UUID;
77

8+
/**
9+
* 加密解密工具类
10+
* 功能描述:
11+
* 加密常用类
12+
*/
813
public class EncryptUtils extends HashKit {
914

15+
16+
/**
17+
* 数据库的密码通过散列获取,如下,算法为:md5,
18+
盐为一个随机数字,散列迭代次数为3次,
19+
最终将salt与散列后的密码保存到数据库内,
20+
第二次登录时将登录的令牌再进行同样的运算后再与数据库的做对比。
21+
*/
22+
23+
//定义盐: 随机的一位数字
1024
public static String salt() {
1125
int random = (int) (10 + (Math.random() * 10));
1226
return UUID.randomUUID().toString().replace("-", "").substring(random);// 随机长度

0 commit comments

Comments
 (0)