实现权限的几种方式
1)通过表来实现 2)shiro框架 3)Spring Security框架
shiro有哪些主要功能
1.授权
访问控制的过程,即确定谁有权访问
2.身份认证
有时被称为“登录”
3.会话管理
特定于用户的回话管理,甚至在非WEB或EJB应用程序
4.加密
保持数据安全使用加密算法,同时仍然容易使用
详情可以查看我们Shiro的官方文档
官方文档
搭建一个普通的Maven项目
在你的pom.xml文件导入依赖
<dependencies> <!-- shiro框架依赖 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.4</version> </dependency> <!-- 日志依赖 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> </dependencies>
实现思路
在src.main.java创建com.shiro文件夹
在你的src.main.resources创建文件shiro.ini与log4j.properties文件
shiro.ini文件
[users] admin=123456 lisi=123 wangwu=1234
log4j.properties
#设置全局的日志配置 log4j.rootLogger=ERROR, stdout #设置自定义的日志级别 log4j.logger.com = debug #控制输出位置和格式 (具体怎么设置不太清楚照搬) log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
在你的shiro文件夹创建类ShiroDay01.java(看代码的注释,注意类的包)
package com.shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; /** * @Classname ShiroDemo1 * @Description TODO * @Date 2019/10/18 9:35 * @Created by 我的有趣住在无趣里 */ public class ShiroDay01{ public static void main(String[] args) { //SecurutyManager--->Factory Factory<SecurityManager> factory =null; //读取shiro.ini配置文件的信息 factory = new IniSecurityManagerFactory("classpath:shiro.ini") //ctrl+alt+V;快速生成变量及对应的数据类型 /*factory.getInstance();*/ SecurityManager securityManager = factory.getInstance(); //当前用户:Subject SecurityUtils.setSecurityManager(securityManager); //当前用户 Subject user = SecurityUtils.getSubject(); //通过UsernamePasswordToken来模拟Html/jsp传递过来的用户名和密码 //修改带的参数可以对数据库的进行验证 UsernamePasswordToken token = new UsernamePasswordToken("admin","123456"); try{ //通过shiro判断用户是否登录成功 user.login(token); System.out.println("登录成功!"); }catch (AuthenticationException e){ System.out.println("登录失败!"); } } }
这就是我们的身份验证,后期待更新