zoukankan      html  css  js  c++  java
  • Shiro进行简单的身份验证(二)

    一个Realm数据源:

    shiro.ini:

    [users]
    wp=123456

    main方法执行认证:

    package com.wp.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;
    
    public class HelloWord {
        public static void main(String[] args) {
            // 读取配置文件,初始化SecurityManager工厂,SecurityManager类似SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher
            Factory<SecurityManager> factory = new IniSecurityManagerFactory(
                    "classpath:shiro.ini");
            // 获取SecurityManager实例
            SecurityManager securityManager = factory.getInstance();
            // 把securityManager实例绑定到SecurityUtils
            SecurityUtils.setSecurityManager(securityManager);
            // 得到当前执行的用户
            Subject currentUser = SecurityUtils.getSubject();
            // 创建token令牌,用户名和密码
            UsernamePasswordToken token = new UsernamePasswordToken("wp", "123456");
            try {
                // 身份认证
                currentUser.login(token);
                System.out.println("身份认证成功!");
            } catch (AuthenticationException e) {// Authentication为认证器,这里之认证异常
                e.printStackTrace();
                System.out.println("身份认证失败!");
            }
            // 退出
            currentUser.logout();
        }
    }
    AuthenticationException为认证异常:DisabledAccountException( 禁用的 帐号) 、 LockedAccountException( 锁定的 帐号) 、
    UnknownAccountException(错误的帐号) 、 ExcessiveAttemptsException(登录失败次数过
    多) 、 IncorrectCredentialsException (错误的凭证) 、 ExpiredCredentialsException(过期的
    凭证)
    认证的流程:
    用户进行login时,会交给securityManage进行委托,在此之前先通过securityUtils.serSecurityManager进行设置;Security进行身份验证,它会交给认证器Authenticator进行认证;Authentication又交给AuthenticationStrategy去Realm中验证,同时Authenticator
    把相应的token传入Realm,从Realm获取身份信息,如果没有或抛出异常,则身份认证失败。

    Java小生店铺:

    Pc端:http://shop125970977.taobao.com/index.htm

    手机端:搜索 java小生店铺

    希望店铺的资料能帮助到你!!!

     

    
    
  • 相关阅读:
    linq 查询-“必须是可缩小的节点”
    在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”
    将字符串转换为double类型的list
    mysql新增用户无法授权!? 解决方案
    eclipse项目有红色感叹号
    错误: 找不到或无法加载主类 java操作hbase出错
    org.apache.hadoop.conf.Configuration无法引用 解决方法
    jdbc的数据库驱动类DriverManager.getConnection()详解
    MySQL [Err] 1055--1064
    控制反转
  • 原文地址:https://www.cnblogs.com/lirenzhujiu/p/5919151.html
Copyright © 2011-2022 走看看