zoukankan      html  css  js  c++  java
  • 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默认就是从配置文件读取信息

  • 相关阅读:
    Python中的passed by assignment与.NET中的passing by reference、passing by value
    从系统性能优化谈对象相等性
    .NET Core应用的三种部署方式
    cola-ui的使用
    谁不是一边娶妻生子,一边死在路上。请你好好生活
    MySQL的5种时间类型的比较
    压缩20M文件从30秒到1秒的优化过程
    CentOS 7下MySQL 5.7安装
    CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档
    CentOS下安装FreeTDS
  • 原文地址:https://www.cnblogs.com/mikemhm/p/11098109.html
Copyright © 2011-2022 走看看