原创:shiro 入门配置三步骤
shiro入门配置,
- 添加依赖包
- shiro.ini文件放在正确位置
- 单元测试编码
- 添加依赖包hiro核心依赖包
<!-- shiro核心包 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.0</version> </dependency>
- shiro.ini文件放在正确位置
#对用户信息进行配置 [users] #用户账号和密码 zhangsan=123456 lisi=654321
- 单元测试编码
ShiroFirstSimple.java文件
package com.test.shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.realm.text.IniRealm; import org.apache.shiro.subject.Subject; import org.junit.Test; /** * Created with IntelliJ IDEA. * @author xiaostudy * Date: 2019/4/29 * Time: 10:20 * Description: No Description */ public class ShiroFirstSimple { // 用户登录和退出 @Test public void testLoginAndLogout() { //Shiro DefaultSecurityManager默认的安全管理器及认证原理 DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); //IniRealm是Shiro提供一种Realm实现。用户、角色、权限等信息集中在一个.ini文件那里。 //classpath:shiro.ini 位于src目录下,ini文件是Initialization File的缩写,即初始化文件 IniRealm iniRealm = new IniRealm("classpath:shiro.ini"); //把初始化域配置文件,赋值给默认安全管理器 defaultSecurityManager.setRealm(iniRealm); //在 Shiro 中 SecurityUtils 是一个抽象类。并且没有任何子类。在其中声明了一个静态属性,三个静态方法。 SecurityUtils.setSecurityManager(defaultSecurityManager); // 从SecurityUtils中创建一个subject (org.apache.shiro.subject.Subject) 即主体 Subject subject = SecurityUtils.getSubject(); // 在认证提交前准备token(令牌) 这里的账号和密码 将来是由用户输入进去的 UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "123456"); // UsernamePasswordToken token = new UsernamePasswordToken("lisi", "654321"); //执行认证提交 try { subject.login(token); } catch (AuthenticationException e) { e.printStackTrace(); } // 是否认证通过 (org.apache.shiro.authc.Authenticator) 即认证器 boolean isAuthenticated = subject.isAuthenticated(); System.out.println("是否认证通过:"+isAuthenticated); if(isAuthenticated) { System.out.println("subject:" + subject); System.out.println("用户/主体:" + subject.getPrincipal()); System.out.println("用户会话:" + subject.getSession().getTimeout()); System.out.println("getPrincipal().getClass(): " + subject.getPrincipal().getClass()); } //退出操作 subject.logout(); // 是否认证通过 isAuthenticated = subject.isAuthenticated(); System.out.println("是否认证通过:"+isAuthenticated); } }
做产品的程序,才是好的程序员!