springboot+shrio简易登录登出和用户权限认证。

源码:https://github.com/huangshengz/myJavaDemo本例子参考:https://www.cnblogs.com/HowieYuan/p/9259638.html

本例子验证主要有两个类,一个是自定义的拦截类ShiroConfig,在这里我们自定义了很多需要的操作。例如:角色权限路径,登录路径等,一些具体的含义如下: * anon:无参,开放权限,可以理解为匿名用户或游客 * logout:无参,注销,执行后会直接跳转到shiroFilterFactoryBean.setLoginUrl(); 设置的 url * authc:无参,需要认证 * authcBasic:无参,表示 httpBasic 认证 * user:无参,表示必须存在用户,当登入操作时不做检查 * ssl:无参,表示安全的URL请求,协议为 https * perms[user]:参数可写多个,表示需要某个或某些权限才能通过,多个参数时写 perms["user, admin"],当有多个参数时必须每个参数都通过才算通过 * roles[admin]:参数可写多个,表示是某个或某些角色才能通过,多个参数时写 roles["admin,user"],当有多个参数时必须每个参数都通过才算通过 * rest[user]:根据请求的方法,相当于 perms[user:method],其中 method 为 post,get,delete 等 * port[8081]:当请求的URL端口不是8081时,跳转到schemal://serverName:8081?queryString 其中 schmal 是协议 http 或 https 等等, * serverName 是你访问的 Host,8081 是 Port 端口,queryString 是你访问的 URL 里的 ? 后面的参数

第二个类是CustomRealm。它继承了AuthorizingRealm类并且重写了登录验证和权限验证。在里面我们可以自定义我们的业务逻辑。这个类非常重要,因为在拦截类ShiroConfig里,securityManager.setRealm(),就是把这个类注入进去,使得拦截能知道用户信息。这个类doGetAuthenticationInfo 和 doGetAuthorizationInfo一定要区分明白,第一个是身份认证,例如登录时就是它,而第二个是角色权限认证,在里面我们设置了角色权限。

在登录方法里,很明确的把用户信息放入到了UsernamePasswordToken里,而doGetAuthenticationInfo进行身份认证时,用户信息就从UsernamePasswordToken取。

最后说一下整个流程:1. 项目启动时,Shiro拦截器工厂类ShiroConfig已经成功的注入。2. 然后我们登录的时候,跳转到login方法里,数据会保存到UsernamePasswordToken里面,主要是用户名和用户密码。3. 然后就走到了CustomRealm类了的身份证方法doGetAuthenticationInfo,在这里,我们根据用户名从数据库里拿到了用户密码与登录密码做比较,然后判断密码是否正确,然后放行,到此用户登录成功。4. 然后用户访问数据的时候,会调用CustomRealm的doGetAuthorizationInfo进行权限认证。

原文地址:https://www.cnblogs.com/hsz-csy/p/9820895.html

时间: 2024-11-09 11:33:35

springboot+shrio简易登录登出和用户权限认证。的相关文章

Struts2学习第六课 实现登录登出功能

关于Struts2请求的扩展名问题: 1).org.apache.struts2包下的default.properties中配置了struts2应用的一些常量 2).struts.action.extension定义了当前struts2应用可以接受的请求的扩展名. 3).可以在struts.xml文件中以常量配置的方式修改default.properties所配置的常量. <constant name="struts.action.extension" value="a

Django 编写博客网站的用户管理部分(采用自有的 django.contrib.auth) 2. 登陆登出和用户信息管理

续前Django 编写博客网站的用户管理部分(采用自有的 django.contrib.auth) 1. 注册部分 项目工具:Python 2.7.11  Django 1.10.2  Bootstrap 3.3.0   IDE:eclipse Pydev 1. 由于Django自带auth, 故仅需编写登录登出的url和template即可 urls常见上篇 template代码如下仅供参考: login 1 {% extends "account_base.html" %} 2 3

世界聊天、阵营聊天、登录登出及服务器广播

一.如何设置玩家名字样式 当玩家世界聊天.阵营聊天.登录登出及世界广播时,服务器会提示以玩家名字XXX开头的消息 在通用设置里可以格式化设置玩家的名字样式,以分隔符|隔开,例如:数字|数字|数字|数字|数字...,具体设置如下 1 名字前添加阵营,[联盟]或[部落] 110 名字前添加职业图标 三选一 101 名字前添加职业名称 111 名字前添加职业图标和名称 210 名字前添加种族图标 三选一 201 名字前添加种族名称 211 名字前添加种族图标和名称 310 名字前添加VIP图标 三选一

CAS5.3 单点登录/登出/springboot/springmvc

环境: jdk:1.8 cas server:5.3.14 + tomcat 8.5 cas client:3.5.1 客户端1:springmvc 传统web项目(使用web.xml) 客户端2:springboot 参考博客:https://blog.csdn.net/anumbrella/category_7765386.html 为了方便,没配置https.如果需要参考上面博客 一.CAS 服务端搭建 1.下载源码包:cas overlay github地址:https://github

博客系统-程序结构-注册登录登出

注册 c判断是否提交了注册数据 是 l如果密码和用户名任一为空 l如果确认密码和密码不一致 m添加用户 c跳转登录页 否 c显示注册页面(提交验证) 登录 判断是否提交了登录数据 c后台验证登录数据->验证类 判断是否在锁定时间内 m判断是否存在登录数据 存在登录用户 重置失败次数和失败登录时间 更新登录时间,ip c设置session的用户名,用户id,权限,角色 c记录日志 c判断跳转(管理首页/跳转到来源页) 跳转 不存在登录用户 记录登录失败时间 跳转登录页 设置session 显示登录

Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)

学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学连接外网登录,其他网站需要自己进行抓包测试. 2.声明,本文更多的是关注网络抓包已经,本地构造,如果有什么错误,请尽情指教,非常感谢. 3.声明,最后源代码,以全部上传github,需要的同志可以自行下载,文章结尾会附带链接. 废话不多说,正文开始: 学校官网 第一步,首先需要实现的是登录操作: 当

单点登录(二)使用Cookie+File实现单点登录登出(附源码)

上一篇文章<单点登录(一)使用Cookie+File实现单点登录>中,我们实现了单点登录的功能. 本文作为上一篇文章的扩展部分,添加"单点登出"功能. 源码下载:链接: http://pan.baidu.com/s/1bn57xCF 密码: 5apa 本例实现效果 浏览器中输入网址:main.tgb.com,后输入用户名:it_main(以it开头即可)和密码pwd_main(以pwd开头即可),勾选"一周内自动登录".点击"登录"按

远程登录华为防火墙以及用户权限的修改

拓扑如下: 实验目的:让R1可以远程登录防火墙并进行一系列操作 实验步骤: 一.建立一个普通用户 "user-int vty 0 4"的意思是允许五个用户登录(分别是0,1,2,3,4):再之后aaa是一种模式:然后我建立了一个名为lewis密码为123的用户:后来系统告诉我,这个输入的密码不够好,需要有大写的字母,数字,以及特殊的符号,蛋!这些都不用管(笑)~ 现在登录测试一下(没完呢别激动): 如图所示,这个用户只是最基本最基本的用户,只具备一些参观功能:在华为设备中,这些用户级别

spring-security用户权限认证框架

大家知道在spring中有一个基于acegi开发的spring-security的权限管理模块,它是一个轻量级框架. SpringSecurity能以声明的方式来保护Web应用程序的URL访问,只需简单的配置即可实现.SpringSecurity通过一系列Servlet过滤器为Web应用程序提供了多种安全服务.      配置spring-security     在web.xml中添加过滤器: <filter> <filter-name>springSecurityFilterC