//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. [考试总结]noip模拟12

    菜 今天总体来说 菜爆了,打了 \(3\) 个暴力,没有一个是正解,并且每一个分数都低得要命... 主要还是太菜了... 第一题开题发现和昨天 \(T3\) 一样,然而因为还没学可持久化数据结构就咕掉 ...

  2. 第二十四篇 -- Cache学习

    Cache存储器 电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(Dynamic Random Access Memory)之间,规模较小,但速度很高的存储器,通常由SRAM(Static R ...

  3. 算法优化---素数(质数)(Java版)

    4.1优化算法-----输出素数 最简代码请直接移步文末 原代码:https://www.cnblogs.com/Tianhaoblog/p/15077840.html 对应优化如下 优化一:在遍历内 ...

  4. intouch与PLC之间通讯状态监测和设置

    intouch与PLC进行通讯状态监测中,一般做法需要PLC来实施主动脉冲计数,或者bool变化来实现.本文通过上位机自带参数设置,实现对intouch通讯状态监视,将画面恢复初始状态,并及时弹窗报警 ...

  5. noip模拟30[毛毛毛探探探]

    \(noip模拟30\;solutions\) 所以说,这次被初中的大神给爆了????? 其实真的不甘心,这次考场上的遗憾太多,浪费的时间过多,心情非常不好 用这篇题解来结束这场让人伤心的考试吧 \( ...

  6. MySQL 创建高性能索引

    索引是存储引擎用于快速找到记录的一种数据结构.除了加速查找,索引在其他方面也有一些有用的属性.索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较 ...

  7. 30K入职腾讯,全靠这份606页的Android面试指南

    前言 光阴似箭,日月如梭,时间真的过得飞快. 加上实习,从事 Android 开发,差不多有 5 年了.在上家公司职务.薪酬感觉已经到达了天花板,没有上升的余地.而且在这家公司过于安逸了,想换个有挑战 ...

  8. tomcat启动时启动窗口出现乱码一招搞定

    先来看看问题(图示),在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码,虽然这些对tomcat本身的使用没有任何影响,但却非常碍眼,影响视觉效果! tomcat启动时启动窗口出现乱码的解决 ...

  9. Docker入门第一章

    Docker为什么出现? 一款产品:开发到上线 两套环境!应用环境,应用配置! 可能在开发环境你的产品是正常的,但是到了线上环境你的产品可能就会出现各种原因,或许是因为环境的不同,也可能是因为配置的不 ...

  10. [TensorFlow2.0]-张量与常用函数

    本人人工智能初学者,现在在学习TensorFlow2.0,对一些学习内容做一下笔记.笔记中,有些内容理解可能较为肤浅.有偏差等,各位在阅读时如有发现问题,请评论或者邮箱(右侧边栏有邮箱地址)提醒. 若 ...