Shiro的退出登录状态的方式(1)

ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();

factoryBean.setSecurityManager(securityManager);

//设置拦截后跳转的请求路径

factoryBean.setLoginUrl(“/user/login”);

首页

shiroFilterFactoryBean.setSuccessUrl(“/index”);

//错误页面,认证不通过跳转

factoryBean.setUnauthorizedUrl(“/error”);

//此处应该使用LinkedHashMap,否则会出现资源只能加载一次然后就被拦截的情况

LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();

//不过滤

filterChainDefinitionMap.put(“/showLogin”, “anon”); // 登录页面,可匿名访问

filterChainDefinitionMap.put(“/js/**”, “anon”);

filterChainDefinitionMap.put(“/goods”, “anon”); // 首页,可匿名访问

// 访问401和404页面不通过我们的Filter

filterChainDefinitionMap.put(“/401”, “anon”);

//filterChainDefinitionMap.put(“/user/logout”, “logout”); // 退出登录

//对所有用户认证

filterChainDefinitionMap.put(“/**”, “authc”); // 需登录才能访问

factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

return factoryBean;

}

shiro会拦截/user/logout,并作出logout运作,完毕后会返回successUrl所拽定的index页面。

:这种方式不需要在Controller中自定义退出相应的Mapping了

方式二:自定义controller路由实现

===============================================================================

shiro的默认登出时会清理用户的session信息,并且也会清理掉 redis中缓存的用户身份认证权限认证的相关信息。但有时候,我们可能还有自己的一些业务需要处理,比如限制用户的登录次数并发登录的人数或者记录日志 当前用户在线时长,使用shiro默认登出方式是无法实现这些功能的。

如果登出操作中需要做额外的处理,可以自定义controller路由实现 :

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
.net/topics/618191877)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Shiro 提供了多种登录方式,包括: 1. 基于表单的登录:用户输入用户名和密码,然后提交表单进行身份验证。 2. 基于记住我功能的登录:在用户登录成功后,将用户的身份信息(如用户名和密码的哈希值)保存在 cookie 中。当用户再次访问网站时,可以通过 cookie 中的身份信息自动登录。 3. 基于 OAuth2 的登录:使用 OAuth2 协议进行身份验证,允许用户使用第三方身份提供者(如 Google、Facebook 等)进行登录。 4. 基于 JWT 的登录:使用 JSON Web Token(JWT)进行身份验证,JWT 包含了用户的身份信息和签名,可以通过密钥进行验证。 5. 基于单点登录(SSO)的登录:允许用户在多个应用程序之间共享身份信息,只需要登录一次即可在所有应用程序中使用。 以上是 Shiro 可以支持的一些常见登录方式,可以根据具体需求选择合适的登录方式。 ### 回答2: Shiro是一个强大的Java身份验证和授权框架,支持多种登录方式。下面是几种常见的登录方式: 1. 用户名密码登录:用户通过输入用户名和密码进行登录验证。Shiro提供了内置的UsernamePasswordToken来封装用户名和密码信息。 2. 第三方账号登录:用户可以通过第三方账号,如微信、QQ、微博等登录Shiro可以通过OAuth2等认证协议来实现第三方账号登录。 3. 邮箱登录:用户可以通过输入注册时绑定的邮箱和密码登录Shiro可以使用EmailToken来验证邮箱登录。 4. 手机号码登录:用户可以通过输入注册时绑定的手机号码和密码进行登录Shiro可以使用PhoneToken来验证手机号码登录。 5. 非交互式登录:用户可以通过预先授权、使用API Token等方式进行非交互式登录。在这种方式下,用户不需要提供用户名和密码,而是使用事先生成的Token进行验证。 6. 单点登录:用户可以通过在主系统登录后,在其他系统中无需再次输入密码直接登录Shiro支持集成开源的单点登录框架,如CAS、OAuth等。 这些登录方式都能够通过Shiro的身份验证功能进行集中管理和控制。通过配置不同的Realm和AuthenticationStrategy,可以灵活地适应各种登录需求,并且可以根据具体情况进行扩展和定制。总之,Shiro提供了多种登录方式的支持,可以方便地满足不同系统的用户认证需求。 ### 回答3: Shiro 是一个流行的 Java 安全框架,提供了多种登录方式,可以根据业务需求和用户实际情况选择合适的方式进行用户认证。 1. 用户名密码登录:这是最常见的登录方式,用户需要输入用户名和密码来进行认证。Shiro 提供了相应的认证策略和相关 API,可以对用户输入的用户名和密码进行校验,验证用户身份。 2. RememberMe 登录:RememberMe 是一种方便的登录方式,用户在成功登录后,可以选择“记住我”选项,下次再访问时可以直接通过验证,无需再次输入用户名和密码。Shiro 提供了 RememberMe 的功能支持,通过在 Cookie 中存储一个加密的记住我标记来实现。 3. 第三方登录Shiro 也支持第三方登录方式,例如使用社交媒体账号(如微信、QQ、微博)进行登录。用户可以选择使用第三方平台的账号来进行认证,Shiro 则需要与相应的第三方平台进行集成,完成认证流程。 4. 单点登录(SSO):单点登录是一种方便用户的登录方式,用户只需登录一次,即可访问多个相关系统。Shiro 提供了相应的 SSO 功能支持,可以通过与其他系统集成,共享用户登录状态和认证信息,实现单点登录的效果。 5. 客户端证书登录:对于某些需要较高安全级别的系统,可以使用客户端证书登录方式。用户需要使用自己的数字证书进行登录认证,Shiro 提供了相关的认证策略和证书管理机制,以确保用户身份的安全认证。 总结来说,Shiro 提供了多种登录方式,包括用户名密码登录、RememberMe 登录、第三方登录、单点登录和客户端证书登录。开发者可以根据实际需求选择合适的登录方式,确保系统的安全性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值