Loading

Shiro(一)通过shiro实现登录

第一步

public class ShiroTest         
@Test        
public void test1(){
//
1.获取用户输入的账号密码 假数据 模拟用户网页输入 String username = "xiaohei"; String password = "123456"; // 2.获取数据库的数据(ini配置文件) 假数据 IniSecurityManagerFactory securityManagerFactory = new IniSecurityManagerFactory("classpath:datasources.ini"); /** * SecurityManager 安全管理器对象 Shiro中的核心对象 * 在此处可以认为封装了配置文件中的用户数据 */ SecurityManager securityManager = securityManagerFactory.getInstance(); // 3.把安全管理器 给 工具类 就相当于把数据库中的数据(ini配置文件)给了Subject SecurityUtils.setSecurityManager(securityManager); // 4.获取Subject 主体 /** * 在项目中任何位置想要得到Subject 都需要通过SecurityUtils 工具类 * * 保证了单例 */ Subject subject = SecurityUtils.getSubject(); // 5.需要把用户输入的账号密码给主体 /** * Token 令牌 记录身份信息 在shiro中需要先把账号密码 封装到Token中 * 在登录的时候 将Token给Subject */ UsernamePasswordToken token = new UsernamePasswordToken(username, password); // 6.调用登录方法 /** * login 通过抛异常的方式来告诉用户有没有登录成功 * * IncorrectCredentialsException 代表密码不正确 Credential 凭证信息 就是password的意思 * * UnknownAccountException 代表账号不存在 Account 账号 * */ try{ subject.login(token); System.out.println("登录成功1"); }catch (IncorrectCredentialsException e){ System.out.println("密码不正确"); }catch (UnknownAccountException e1){ System.out.println("账号不存在"); }
        if(
subject.isAuthenticated()){
            System.out.println(authenticated+"是否登录成功");
        }

        }

说明:

数据库的用户信息使用的是datasources.ini配置文件中的假数据。因为Shiro默认就是从配置文件读取信息

posted @ 2019-06-27 19:39  mikemhm  阅读(6261)  评论(0编辑  收藏  举报