Shiro-初步了解

1.文件结构


2.pom.xml导入依赖

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!-- shiro-core -->
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.3.2</version>
    </dependency>

3.定义shiro.ini

[users]
admin=hello
wyyblog=java

4.测试类testLoginDemo.java

package top.wyyblog.demo;

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.subject.Subject;
import org.apache.shiro.util.Factory;
import org.apache.shiro.mgt.SecurityManager;
public class testLoginDemo {

    public static void main(String[] args) {
        //取得Factory对象
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        //取得里面所保存的认证的数据信息
        SecurityManager securityManager = factory.getInstance();
        // 利用专门的认证操作的处理类,实现认证处理的实现
        SecurityUtils.setSecurityManager(securityManager);
        // 获取进行用户名和密码认证的接口对象
        Subject subject = SecurityUtils.getSubject();
        //定义了一个Token,里面保存了用户名和密码的信息
        UsernamePasswordToken token = new UsernamePasswordToken("admin","hello");
        //实现用户登录
        /**
         * 如果错误的话就会抛出异常
         * 1. 密码错误:
         * org.apache.shiro.authc.IncorrectCredentialsException:
         * Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - admin,
         * rememberMe=false] did not match the expected credentials.
         * 2. 用户名错误:
         * org.apache.shiro.authc.UnknownAccountException:
         * Realm [org.apache.shiro.realm.text.IniRealm@6ae40994]
         * was unable to find account data for the submitted AuthenticationToken
         * [org.apache.shiro.authc.UsernamePasswordToken - dmin, rememberMe=false].
         * !!!如果账户出现了错误密码则不会验证...
         */
        try {
            subject.login(token);
            System.out.println("登录成功:"+subject.getPrincipal());
        }catch (AuthenticationException e){
            //身份验证失败
            System.out.println("登录失败");
        }
        //退出
        subject.logout();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37791322/article/details/79804920