shiro登录源码
//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登录源码的更多相关文章
- Yii2 使用 QQ 和 Weibo 第三方登录源码
我们社区在 yii2-authclient 多次升级后,登录异常.一直想寻求一种通用的方法,尽量不重写 OAuth2, BaseOAuth 以及 OAuthToken 类, 所以本次直接在 initU ...
- Saiku登录源码追踪.(十三)
Saiku登录源码追踪呀~ >>首先我们需要debug跟踪saiku登录执行的源码信息 saiku源码的debug方式上一篇博客已有说明,这里简单介绍一下 在saiku启动脚本中添加如下命 ...
- CAS Server集成QQ登录、新浪微博登录源码及配置文件
转载自素文宅博客:https://blog.yoodb.com/yoodb/article/detail/1446 CAS Server集成QQ第三方登录,CAS Server集成新浪微博第三方登录以 ...
- CAS单点登录源码解析之【客户端】
cas 3.5.3服务器搭建+spring boot集成+shiro模拟登录(不修改现有shiro认证架构).因为我们属于供应商,所以有些客户那里会需要接对方的CAS,所以没有使用shiro和cas的 ...
- 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码
/** 转载请保留原地址以及版权声明,请勿恶意修改 * 作者:杨浩瑞 QQ:1420213383 独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...
- 类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享
/** 转载请保留原地址以及版权声明,请勿恶意修改 * 作者:杨浩瑞 QQ:1420213383 独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...
- spring security 之自定义表单登录源码跟踪
上一节我们跟踪了security的默认登录页的源码,可以参考这里:https://www.cnblogs.com/process-h/p/15522267.html 这节我们来看看如何自定义单表认 ...
- 天猫登录源码 POST C#
HttpHelper 请从网络中搜索: public partial class LoginTMall : Form { public LoginTMall() { InitializeCompone ...
- 密码登录源码(jsp+java+数据库)
jsp界面: <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...
随机推荐
- 多项式求值问题(horner规则)——Python实现
# 多项式求值(Horner规则) # 输入:A[a0,a1,a2...an],x的值 # 输出:给定的x下多项式的值p # Horner迭代形式实现 1 # 在此修改初值 2 A = [2, 6 ...
- 关于ClassLoader 和Class的俩个记录
public class ZFBCheckAccountTask extends TaskThread { 断点 @CallerSensitive public ClassLoader getClas ...
- DC-5靶机
仅供个人娱乐 靶机信息 下载地址:http://www.five86.com/downloads/DC-5.zip 一.主机扫描 arp-scan -l nmap -p 1-65535 -A -sV ...
- 🔥 LeetCode 热题 HOT 100(71-80)
253. 会议室 II(NO) 279. 完全平方数 class Solution { public int numSquares(int n) { // dp[i] : 组成和为 i 的最少完全平方 ...
- 总结开发中基于DevExpress的Winform界面效果
DevExpress是一家全球知名的控件开发公司, DevExpress 也特指此公司出品的控件集合或某系列控件或其中某控件.我们应用最为广泛的是基于Winform的DevExpress控件组,本篇随 ...
- WPF DataGrid DataGridTextColumn
Style设置时,无法绑定到数据,需要这样写 1 <DataGridTextColumn Header="呵呵" Binding="{Binding ID}&quo ...
- 什么是RSA
一.RSA引入: RSA是什么,嗯,这是一个好问题,有没有兴趣啊 二.RSA的解释: RSA是一种加密方式,它是现代密码学的代表(什么是现代密码学,这个吗,我感觉就是我们所使用的密码的加密的方式之一可 ...
- RHCSA_DAY11
删除逻辑卷 逻辑卷的删除不允许联机操作,需要先卸载,在执行删除 在执行删除操作时,首先删除LV逻辑卷,在删除VG卷组,最后删除PV物理卷 删除命令:lvremove #删除逻辑卷错误示范 [root@ ...
- 【LeetCode】738. 单调递增的数字
738. 单调递增的数字 知识点:字符串:贪心 题目描述 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x ...
- 通过Appium日志,分析其运行原理
1.启动appium: appium的rest http 接口开始监听 4723 端口: 2.运行 python 脚本: appium接收到一个post请求 /wd/hub/session,并携带了 ...