java 权限url权限_如何实现登录、URL和页面按钮的访问控制

作者:社会主义接班人cnblogs.com/5ishare/p/10461073.html

用户权限管理一般是对用户页面、按钮的访问权限管理。Shiro框架是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理,对于Shiro的介绍这里就不多说。本篇博客主要是了解Shiro的基础使用方法,在权限管理系统中集成Shiro实现登录、url和页面按钮的访问控制。

一、引入依赖

使用SpringBoot集成Shiro时,在pom.xml中可以引入shiro-spring-boot-web-starter。由于使用的是thymeleaf框架,thymeleaf与Shiro结合需要 引入thymeleaf-extras-shiro。

16dcea5d6cbfa1707b7d556ebc88a81f.png

二、增加Shiro配置

有哪些url是需要拦截的,哪些是不需要拦截的,登录页面、登录成功页面的url、自定义的Realm等这些信息需要设置到Shiro中,所以创建Configuration文件ShiroConfig。

f916877c2dfb74a7f493b828c6500795.png

ShiroDialect这个bean对象是在thymeleaf与Shiro结合,前端html访问Shiro时使用。

三、自定义Realm

在自定义的Realm中继承了AuthorizingRealm抽象类,重写了两个方法:doGetAuthorizationInfo和doGetAuthenticationInfo。doGetAuthorizationInfo主要是用来处理权限配置,doGetAuthenticationInfo主要处理身份认证。

这里在doGetAuthorizationInfo中,将role表的id和permission表的code分别设置到SimpleAuthorizationInfo对象中的role和permission中。

还有一个地方需要注意:@Component("authorizer"),刚开始我没设置,但报错提示需要一个authorizer的bean,查看AuthorizingRealm可以发现它implements了Authorizer,所以在自定义的realm上添加@Component("authorizer")就可以了。

e035df6fab09ed4265f7ad77f79c154f.png

四、登录认证

1.登录页面

这里做了一个非常丑的登录页面,主要是自己懒,不想在网上复制粘贴找登录页面了。

e0b12099f80b202361c9af8b5d2815a4.png

2.处理登录请求

在LoginController中通过登录名、密码获取到token实现登录。

21c76ca5296d82e44217806f31cd56f8.png

五、Controller层访问控制

1.首先来数据库的数据,两张图是用户角色、和角色权限的数据。

dfa69009982397cd345d5fc4cb0466d9.png
6cba16b43de92a39929e3fc9d5da4f9c.png

2.设置权限

这里在用户页面点击编辑按钮时设置需要有id=002的角色,在点击选择角色按钮时需要有code=002的权限。

@RequestMapping(value = "/edit
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现用户权限系统需要先设计好数据表结构,一般需要设计用户表、角色表和权限表。用户表记录用户信息,角色表记录角色信息,权限表记录具体权限信息,如菜单、按钮等。 以下是一个简单的用户权限系统的实现步骤: 1. 设计数据表结构 ``` CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(100) NOT NULL COMMENT '密码', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; CREATE TABLE `role` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色ID', `name` varchar(50) NOT NULL COMMENT '角色名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; CREATE TABLE `permission` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限ID', `name` varchar(50) NOT NULL COMMENT '权限名称', `url` varchar(200) DEFAULT NULL COMMENT '权限URL', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; CREATE TABLE `user_role` ( `user_id` int(11) NOT NULL COMMENT '用户ID', `role_id` int(11) NOT NULL COMMENT '角色ID', PRIMARY KEY (`user_id`,`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表'; CREATE TABLE `role_permission` ( `role_id` int(11) NOT NULL COMMENT '角色ID', `permission_id` int(11) NOT NULL COMMENT '权限ID', PRIMARY KEY (`role_id`,`permission_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表'; ``` 2. 实现用户登录验证 用户登录时需要验证用户名和密码是否正确,可以使用加密算法对密码进行加密。常用的加密算法有MD5和SHA1等。验证成功后可以将用户信息保存到Session,方便后续的权限验证。 3. 实现权限验证 在用户登录后,需要验证用户是否有访问某个资源的权限。可以在拦截对请求进行拦截,判断用户是否有访问该资源的权限。具体实现可以查询用户所拥有的角色和角色所拥有的权限,判断是否包含该资源的权限。 4. 实现用户角色和权限管理功能 在系统需要提供用户角色和权限的管理功能,可以实现添加、删除、修改和查询等操作。对于用户角色关联和角色权限关联表的操作可以使用MyBatis等ORM框架进行实现。 以上是一个简单的用户权限系统的实现步骤,可以根据实际需求进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值