java登录权限代码_写一个简易的java项目(四) 登陆和权限

用到的技术:

后台: java (springboot+shiro) 。创建项目-可参考

前台: vue-admin-template (前台权限参考vue-element-admin)。下载配置-可参考

编辑器:

后台:IntelliJ IDEA

前台:Visual Studio Code

后台:

第一步:打印日志 &确认前台传过来的参数:账号密码

这里我使用fastjson的方法 获取用户密码,代码如下

897fa340b61f1cfb2b7395ca40a32848.png

pom:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

com.alibaba

fastjson

1.2.47

View Code

登陆打印结果:

7ad111ba7ca99fcb1fa6c0e82d5658a1.png

第二步: 这里我们先创建三张表:

因为只是登陆 还没到权限所以 主要是用户表: 存一些基本信息如 账号 密码 头像 密码盐(如果需要的话) 角色id

sys_user 用户

sys_role 角色

sys_permission 权限

用户表:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

CREATE TABLE`sys_user` (

`user_id` bigint NOT NULL COMMENT '主键id',

`avatar`varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像',

`account`varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '账号',

`password`varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '密码',

`salt`varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '密码盐',

`name`varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名字',

`birthday`datetime DEFAULT NULL COMMENT '生日',

`sex`varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别',

`email`varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '邮箱',

`phone`varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '电话',

`role_ids`varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '角色id(多个逗号隔开)',

`create_time`datetime DEFAULT NULL COMMENT '创建时间',

`create_user`bigint DEFAULT NULL COMMENT '创建人',

`update_time`datetime DEFAULT NULL COMMENT '更新时间',

`update_user`bigint DEFAULT NULL COMMENT '更新人',PRIMARY KEY (`user_id`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户表';

View Code

角色表:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

CREATE TABLE`sys_role` (

`role_id`bigint NOT NULL COMMENT '主键id',

`pid`bigint DEFAULT NULL COMMENT '父角色id',

`name`varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '角色名称',

`description`varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述',

`sort`int DEFAULT NULL COMMENT '序号',

`create_time`datetime DEFAULT NULL COMMENT '创建时间',

`update_time`datetime DEFAULT NULL COMMENT '修改时间',

`create_user`bigint DEFAULT NULL COMMENT '创建用户',

`update_user`bigint DEFAULT NULL COMMENT '修改用户',

`deleted`tinyint(1) DEFAULT '0' COMMENT '逻辑删除',PRIMARY KEY(`role_id`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='角色表';

View Code

权限表:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

CREATE TABLE`sys_permission` (

`id`int NOT NULLAUTO_INCREMENT,

`role_id`int DEFAULT NULL COMMENT '角色ID',

`permission`varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限',

`create_time`datetime DEFAULT NULL COMMENT '创建时间',

`update_time`datetime DEFAULT NULL COMMENT '更新时间',

`deleted`tinyint(1) DEFAULT '0' COMMENT '逻辑删除',PRIMARY KEY(`id`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='权限表';

View Code

第三步:shiro 权限认证

1.pom:

org.apache.shiro

shiro-spring-boot-web-starter

1.4.0

2.自定义Realm 主要作用有:验证登陆人的账号密码是否正确、验证账号的权限信息等等

extends AuthorizingRealm 重写两个方法:

doGetAuthorizationInfo(PrincipalCollection principalCollection)

doGetAuthenticationInfo(AuthenticationToken authenticationToken)

c00387c222f321a9fb233562b0d9f991.png

KingRealm

第一个方法:授权:这里需要写一些方法->通过角色id 获取角色名称 和 权限信息

/*** 权限认证

*@paramprincipalCollection

*@return

*/@OverrideprotectedAuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {//获取用户

User user =(User) principalCollection.getPrimaryPrincipal();

String roleIds=user.getRoleIds();//通过角色id获取用户权限

Set roles =roleService.getRolesByRoleIds(roleIds);

Set permissions =permissionService.getPermissionsByRoleIds(roleIds);

SimpleAuthorizationInfo info= newSimpleAuthorizationInfo();

info.setRoles(roles);

info.setStringPermissions(permissions);returninfo;

}

service

public SetgetPermissionsByRoleIds(String roleIds) {

Set permissions = new HashSet();if(StringUtils.isEmpty(roleIds)) {returnpermissions;

}

List permissionList =permissionMapper.getPermissionsByRoleIds(roleIds);for(Permission permission : permissionList) {

permissions.add(permission.getPermission());

}returnpermissio

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值