Apache Shiro 第一个简单的身份验证

 

本次身份验证的例子是基于ini配置文件


身份验证


        应用程序需要验证登录的是用户本人,用户需要提供相应信息来向应用程序表明我就是我。提供的用户信息如,用户名/密码、手机号等唯一可以表示用户身份证明的信息。

       在Shiro中,用户需要提供身份(principals)和证明(credentials)给Shiro,从而可以帮助应用程序验证用户的身份合法性。


身份(principals)


       用户主体的标识属性,可以是任何信息,但是必须保证该信息是唯一的。如用户名、手机号等。一个用户可以有多个身份信息,但是必须有一个唯一主身份。一般是用户名/密码。


证明/凭证(credentials)


       只有用户知道的可以去验证用户身份的安全值,如密码、数字证书等。


下面我们来使用Shiro做一个简单的身份验证的例子

我们使用Maven来构建项目,这样不需要我们去单独下载相关的依赖jar包了。

Maven环境依赖

<dependencies>
	<dependency>
		<groupId>org.apache.shiro</groupId>
		<artifactId>shiro-core</artifactId>
		<version>1.2.2</version>
	</dependency>
</dependencies>

我们通过简单的一个Java类来进行验证,所以只需要引入必要的shiro-core依赖即可。

扫描二维码关注公众号,回复: 10372179 查看本文章

登录/登出

  • 在ini配置文件中配置出用户的信息
[users]
cuierdan=666666
erdan=888888

在ini配置文件中配置了两个用户,通过[users]来指定。

  • 创建一个简单的Java类,带main()方法的。
/**
 * Shiro 登录/登出 验证测试类
 *
 * @author CuiErdan
 * @since 2020/4/100 88点88分
 **/
public class FirstShiro {

    public static void main(String[] args) {
     
    }
}

下面我们添加有关Shiro身份验证的代码

/**
 * Shiro 登录/登出 验证测试类
 *
 * @author CuiErdan
 * @since 2020/4/100 88点88分
 **/
public class FirstShiro {

    public static void main(String[] args) {
        // 1. 通过ini配置文件来创建SecurityManager 工厂
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        // 2. 实例化SecurityManager
        SecurityManager securityManager = factory.getInstance();
        // 3. 将SecurityManager 绑定给SecurityUtils 工具上 ,SecurityUtils 类 是一个全局的配置类,设置一次就可以了。
        SecurityUtils.setSecurityManager(securityManager);
        // 4. 通过SecurityUtils 类,得到Subject ,SecurityUtils会将Subject类自动绑定到当前线程。
       //如果是Web环境在请求结束时需要解除绑定。
        Subject subject = SecurityUtils.getSubject();
        // 5. 根据用户名/密码获取用于身份验证的Token。
        UsernamePasswordToken token = new UsernamePasswordToken("cuierdan","666666");
        try {
            // 6. 将用户用于验证身份的Token,传入到login(),进行登录。
            //因为Subject是由SecurityManager 管理的,
            //所以Shiro会自动委托给SecurityManager.login()方法进行登录。
            subject.login(token);
            System.out.println("成功");
        }catch (AuthenticationException e){
            // 7. 如果认证失败,根据相应的异常返回对应的提示信息。
            System.out.println("失败");
        }
        // 8. 当身份验证成功,用户信息合法,可以调用登出logout()方法,
        //将该用户进行登出操作。Shiro会自动委托给SecurityManager.logout()方法。
        //实现登出操作。
        subject.logout();
        System.out.println("已退出");
    }
}

运行本Java类,得到如下结果,验证成功。

D:\ProgramFiles\Java\jdk1.8.0_181\bin\java.exe ...
成功
已退出

Process finished with exit code 0

可以去修改代码中的用户名或密码,会得到相应验证的结果。

到此第一个Shiro简单验证的例子就结束了。

发布了13 篇原创文章 · 获赞 20 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/cuierdan/article/details/105242771