Shiro入门(二)Shiro登录认证

news/2024/7/8 5:43:49

前言

      本章讲解使用Shiro实现登陆验证

方法

1.概念

Authentication,验证用户是否合法,说白了就是登陆。

 需要提交用户的身份和凭证给shiro,简单点来说就是用户名和密码。

Principals:用户的身份信息,是Subjec的标识属性。能够唯一标识Subjcet。如电话号码、电子邮箱,身份证号等。

Credentials:凭证,是只被Subject知道的秘密值。可以是密码,也可以是其他,如数字证书等。

2.Shiro中用户的认证流程

3.实现步骤

1)新建一个Gradle的Java工程

2)引入Shiro相关的jar包

 

3)创建shrio.ini用来验证用户名密码是否合法

 

这里我们指定了用户名和密码必须为admin和123的时候才算验证成功!

4)编写代码进行验证

package cn.edu.ccut.test;

import org.apache.shiro.SecurityUtils;
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;

/**
 * @Auther:jwang
 * @Date:2019/5/8
 * @Description:cn.edu.ccut.test
 * @Version 1.0
 **/
public class Authentication {

    public static void main(String [] args){
        //创建SecurityManager工厂
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        //通过SecurityManager工厂获取SecurityManager实例
        SecurityManager securityManager = factory.getInstance();
        //将SecurityManager对象设置到运行环境中
        SecurityUtils.setSecurityManager(securityManager);
        //通过SecurityUtils获取主体Subject
        Subject currentUser = SecurityUtils.getSubject();
        //假设传入的用户名密码为admin和123
        UsernamePasswordToken token = new UsernamePasswordToken("admin", "123");
        //进行用户身份验证
        currentUser.login(token);
        //如果用户认证成功
        if (currentUser.isAuthenticated()) {
            System.out.println("用户登录成功!");
        }else {
            System.out.println("用户登录失败!");
        }
    }
}

注意:需要引入org.apache.shiro.mgt.SecurityManager,否则默认是java.lang.SecurityManager

运行代码我们发现:

显然,我们还缺少相关的jar包,进行引入:

 

导入后运行结果如下:
 

这意味着用户登录认证通过! 


http://www.niftyadmin.cn/n/2757444.html

相关文章

Android使用属性动画ValueAnimator动态改变SurfaceView的背景颜色

以下是主要代码&#xff0c;难点和疑问点都写在注释中&#xff1a; /*** 开始背景动画&#xff08;此处为属性动画&#xff09;*/private void startBackgroundAnimator(){/**参数解释&#xff1a;*target&#xff1a;设置属性动画的目标类&#xff0c;此处是当前自定义view所以…

Oracle 默认和非默认监听

一、如果使用默认的1521端口&#xff0c;让实例自动注册到该监听上&#xff0c;那么local_listener无需设置&#xff0c;listener.ora文件按照正常方式配置即可。 二、如果使用非默认1521端口&#xff0c;让实例自动注册到该监听上&#xff0c;那么需要设置local_listerner参数…

《android Graphics(一):概述及基本几何图形绘制》

2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/harvic880925/article/details/38875149 1、《android Graphics&#xff08;一&#xff09;&#xff1a;概述及基本几何图形绘制》2、《android Graphics&#xff08;二&#xff09;&#xff1a;路…

Shiro入门(三)Shiro异常和JdbcRealm

前言 本章讲解Shiro的异常和JdbcRealm的相关知识 方法 1.回顾 在之前&#xff0c;我们完成了shiro的登陆验证&#xff0c;不知道大家有没有试过写错密码或者用户名会出现什么情况&#xff1f; 是会出现诸如“用户登陆失败&#xff01;”的字眼吗&#xff1f;显然不是的&…

bzoj 2434 fail tree+dfs序

首先比较明显的是我们可以将字符串组建立ac自动机&#xff0c;那么对于询问s1字符串在s2字符串中出现的次数&#xff0c;就是在以s1结尾为根的fail tree中&#xff0c;子树有多少个节点是s2的节点&#xff0c;这样我们处理fail tree的dfs序&#xff0c;然后用BIT维护&#xff0…

JNDI解读(转)

NDI 是什么 JNDI是 Java 命名与目录接口&#xff08;Java Naming and Directory Interface&#xff09;&#xff0c;在J2EE规范中是重要的规范之一&#xff0c;不少专家认为&#xff0c;没有透彻理解JNDI的意义和作用&#xff0c;就没有真正掌握J2EE特别是EJB的知识。 那么&…

Shiro入门(四)Shiro登录验证源码及策略

前言 本章讲解Shiro登录验证的源码剖析以及登录验证策略 方法 一、Shiro登陆验证源码解析 1.使用Subject的login方法验证token 2.实际上Subject类仅仅是一个接口&#xff0c;他通过实现类DelegatingSubject将token委托给SecurityManager 来完成验证 3.而SecurityManager作为…

OCM考点之一外部表管理

一、创建外部表以及产生dmp文件1、创建directory&#xff0c;需要有 create any directory权限&#xff1a;CREATE DIRECTORY admin AS /oracle/admin; 或者创建了diretory后授权read权限&#xff1a;GRANT READ ON DIRECTORY admin TO scott; 2、创建外部表&#xff1a;SQL&…