//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. 扩展欧几里得(exgcd)-求解不定方程/求逆元

    贝祖定理:即如果a.b是整数,那么一定存在整数x.y使得ax+by=gcd(a,b).换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍.(可以来判断一个这样的式子有没有解)有一个 ...

  2. sql语句优化(持续更新)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引 ...

  3. ODOO14 ---系统启动方式

    一.通过pycharm启动 1.配置启动面板: 点击启动即可: 第二种.通过CMD窗口启动:进入到odoo-bin的目录下,执行:python E:\odoo14\odoo14\odoo-bin  这 ...

  4. 添加底部导航栏tabbar

    效果图: 如果要添加底部导航栏,最少2个,最多5个. app.json { "pages": [ "pages/index/index", "page ...

  5. spring第三章

    第三章 实现AOP AOP:面向方面编程,AOP能够使您将所有模块共有的特性与应用程序的主要业务逻辑隔离开 一.AOP介绍 横切关注点:在Web应用程序中,有一些服务(如登录.安全和事务管理)不是应用 ...

  6. 构建前端第8篇之---Webstom搭建ES6运行环境

    张艳涛 写于2021-1-22 一.在有webstorm和node.js前提下,安装全局的babel npm install babel-cli babel-eslint -g 二.在terminal ...

  7. CVE-2018-12613总结

    1.漏洞基础介绍 1.1漏洞背景 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此We ...

  8. 小白学习Vue第五天(v-model实用的地方)

    用法一radio单选项 <!-- 添加name男女选项互斥 --> <label for="male"> <input type="radi ...

  9. 几个垃圾XSS

    遇见帅比厂商就离谱.... 这个厂商就挖了几个反射XSS,幸亏没有浪费太多时间 嗯 有的有waf.有的没有就离谱 可以看见可以解析的,但是他的这个站,遇见关键函数就自己跳转了.然后去寻找下别的标签fu ...

  10. Unsatisfied dependency expressed through field 'rabbitTemplate'错误总结

    1. 在springboot中整合RabbitMq的过程中,遇到如下错误:(截取部分) org.springframework.beans.factory.UnsatisfiedDependencyE ...