//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
Factory<org.apache.shiro.mgt.SecurityManager> factory =
new IniSecurityManagerFactory(configFile); //2、得到SecurityManager实例 并绑定给SecurityUtils
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager); SecurityUtils.setSecurityManager(securityManager)源码:
* *
*设置一个VM(静态)单例SecurityManager,专门用于透明使用
* {@link #getSubject() getSubject()}实现。
* < p / >
* <b>此方法调用主要用于框架开发支持。应用程序开发人员很少,
*如果需要,需要调用这个方法。</b>
* < p / >
Shiro开发团队更喜欢SecurityManager实例是非静态的单例应用程序
*和<em>不是</em> VM静态单例。不使用静态内存的应用程序单例需要一些排序
*应用程序配置框架,为您维护应用程序范围的SecurityManager实例
*(例如,Spring或EJB3环境),这样对象引用就不需要是静态的。
* < p / >
在这些环境中,Shiro通过自己的线程根据当前正在执行的线程获取主题数据
*框架集成代码,这是使用Shiro的首选方式。
* < p / >
*然而在一些环境中,例如一个独立的桌面应用程序或applet不使用Spring或
* EJB或类似的配置框架,VM-singleton可能更有意义(尽管前者仍然是首选)。
*在这些环境中,通过此方法设置SecurityManager将自动启用
* {@link #getSubject() getSubject()}调用函数,配置很少。
* < p / >
*例如,在这些环境中,这将工作:
* <前>
* DefaultSecurityManager securityManager = new {@link org.apache.shiro.mgt。DefaultSecurityManager DefaultSecurityManager} ();
* securityManager。setRealms (…);//一个或多个域
* < b > SecurityUtils。setSecurityManager (securityManager); < / b > < / pre >
* < p / >
*然后在应用程序代码的任何地方,下面的调用将返回应用程序的主题:
* <前>
* currentUser = securityutil . getsubject ();</pre>
*
* @param securityManager将securityManager实例设置为一个VM静态单例。
* /
public void setSecurityManager(SecurityManager SecurityManager) {
SecurityUtils。securityManager = securityManager;
} //3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password); UsernamePasswordToken(username, password):源码:
/ * *
*构造一个新的UsernamePasswordToken,封装提交的用户名和密码
*在验证过程中,使用<tt>null</tt> {@link #getHost() host}和
* a <tt>remember berme </tt> default <tt>false</tt>
* < p / >
* <p>这是一个方便的构造函数,通过一个字符在内部维护密码
* array,即<tt>password.toCharArray();注意,将密码存储为字符串
*在您的代码中可能存在安全隐患,如类JavaDoc.</p>中所述
*
提交认证的用户名
提交用于身份验证的密码字符串
* /
public UsernamePasswordToken(final String username, final String password) {
this(username, password != null ? password.toCharArray() : null, false, null);
} subject.login(token):源码:
/ * *
*为该主题/用户执行一次登录尝试。
如果不成功,
抛出{@link AuthenticationException},它的子类表示尝试失败的原因。
*如果成功,与提交的主体/凭证相关联的帐户数据将是
*与这个{@code Subject}相关联,该方法将悄悄地返回。
* < p / >
*静悄悄返回后,可以考虑这个{@code Subject}实例
* authenticated和{@link #getPrincipal() getPrincipal()}将是非空的
* {@link #isAuthenticated() isAuthenticated()}将是{@code true}。
*
* @param令牌该令牌封装了要传递给的主题的主体和凭据
*验证子系统。
* @throws org.apache.shiro.authc.AuthenticationException
*如果身份验证尝试失败。
* @since 0.9
* /
void login(AuthenticationToken token) throws AuthenticationException;

shiro登录源码的更多相关文章

  1. Yii2 使用 QQ 和 Weibo 第三方登录源码

    我们社区在 yii2-authclient 多次升级后,登录异常.一直想寻求一种通用的方法,尽量不重写 OAuth2, BaseOAuth 以及 OAuthToken 类, 所以本次直接在 initU ...

  2. Saiku登录源码追踪.(十三)

    Saiku登录源码追踪呀~ >>首先我们需要debug跟踪saiku登录执行的源码信息 saiku源码的debug方式上一篇博客已有说明,这里简单介绍一下 在saiku启动脚本中添加如下命 ...

  3. CAS Server集成QQ登录、新浪微博登录源码及配置文件

    转载自素文宅博客:https://blog.yoodb.com/yoodb/article/detail/1446 CAS Server集成QQ第三方登录,CAS Server集成新浪微博第三方登录以 ...

  4. CAS单点登录源码解析之【客户端】

    cas 3.5.3服务器搭建+spring boot集成+shiro模拟登录(不修改现有shiro认证架构).因为我们属于供应商,所以有些客户那里会需要接对方的CAS,所以没有使用shiro和cas的 ...

  5. 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  6. 类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  7. spring security 之自定义表单登录源码跟踪

    ​ 上一节我们跟踪了security的默认登录页的源码,可以参考这里:https://www.cnblogs.com/process-h/p/15522267.html 这节我们来看看如何自定义单表认 ...

  8. 天猫登录源码 POST C#

    HttpHelper 请从网络中搜索: public partial class LoginTMall : Form { public LoginTMall() { InitializeCompone ...

  9. 密码登录源码(jsp+java+数据库)

    jsp界面: <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...

随机推荐

  1. springboot+mybatis+mysql 利用mybatis自动生成sql语句

    工具和环境 idea,mysql,JDK1.8 效果图如下 结构图如下 java resources sql文件 /* Navicat MySQL Data Transfer Source Serve ...

  2. charles f配置sslproxy 对protobuf 接口抓包 -不推荐

    charles 配置sslproxy help-安装电脑证书 手机连接访问电脑,下载允许手机 手机连接vpn 手机访问chls.pro/ssl -下载证书 request可以看到protobuf_tx ...

  3. (python函数01)enumerate函数

    enumerate函数 enumerate函数示例代码01运行结果01示例代码02运行结果02 enumerate(枚举,列举)是python的内置函数,enumerate的参数为可迭代对象,如字符串 ...

  4. 🔥 LeetCode 热题 HOT 100(51-60)

    142. 环形链表 II 思路:快慢指针,快慢指针相遇后,慢指针回到头,快慢指针步伐一致一起移动,相遇点即为入环点 /** * Definition for singly-linked list. * ...

  5. php 正则判断是否是手机号码

    $phonenumber = '13712345678'; if(preg_match("/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|17[0-9]|1 ...

  6. 大数据学习(09)—— Hive语法

    Hive官方网站上有详细的语法说明,参考LanguageManual. 这里我把最常用的几块列出来. HIVE DDL Database 建库语句 CREATE (DATABASE|SCHEMA) [ ...

  7. kali linux重启网卡失败:Job for networking.service failed because the control process exited with error code. See "systemctl status networking.service" and "journalctl -xe" for details. 问题排查

    linux菜鸡的时候,总是为了配置网络而烦恼,重启网卡的原因有很多,我这次是因为配置了固定IP[使用第三方工具连接]所以需要重启网卡,出现 Job for networking.service fai ...

  8. JavaScript实现,判断一个点是否在多边形内(简直nice,希望能帮到你)

    //定义点的结构体 function point(){ this.x=0; this.y=0; } //计算一个点是否在多边形里,参数:点,多边形数组 function PointInPoly(pt, ...

  9. Python3中的字符串相关操作

    Python3的字符串操作相关函数详解 字符串内建函数 1. capitalize() 将字符串中的第一个字符转换成大写,其他字母变成小写.例: >>> "hello Wo ...

  10. 遗传算法 TSP(Python代码)

    该代码是本人根据B站up主侯昶曦的代码所修改的. 原代码github地址:https://github.com/Houchangxi/heuristic-algorithm/blob/master/T ...