返回顶部
首页 > 资讯 > 精选 >springboot如何整合shiro实现登录验证授权的过程解析
  • 363
分享到

springboot如何整合shiro实现登录验证授权的过程解析

2023-06-29 00:06:42 363人浏览 泡泡鱼
摘要

本篇文章为大家展示了SpringBoot如何整合shiro实现登录验证授权的过程解析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。springboot整合shiro实现登录验证授权,内容如下所示:1

本篇文章为大家展示了SpringBoot如何整合shiro实现登录验证授权的过程解析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

springboot整合shiro实现登录验证授权,内容如下所示:

1.添加依赖:

<!-- shiro -->        <dependency>            <groupId>org.apache.shiro</groupId>            <artifactId>shiro-spring</artifactId>            <version>1.7.1</version>        </dependency>

2.yml配置:

#配置服务端口server:  port: 8080  servlet:    encoding:      charset: utf-8      enabled: true      force: true    context-path: /cxh/spring:  #配置数据源  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:Mysql://localhost:3306/cxh_mall_service?characterEncoding=utf-8&useSSL=false    username: root    passWord: 123456  #配置页面  mvc:    view:      prefix: /WEB-INF/page/      suffix: .jsp  #配置上传文件大小  servlet:    multipart:      max-file-size: 10MB#配置mybatismybatis:  config-location: classpath:mybatis/mybatis-config.xml  mapper-locations: classpath:mybatis/mapper    @Override    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {        String username = (String) arg0.getPrimaryPrincipal();        SysUser sysUser = sysUserService.getUserByName(username);        // 角色列表        Set<String> roles = new HashSet<String>();        // 功能列表        Set<String> menus = new HashSet<String>();        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();        roles = sysRoleService.listByUser(sysUser.getId());        menus = sysMenuService.listByUser(sysUser.getId());        // 角色加入AuthorizationInfo认证对象        info.setRoles(roles);        // 权限加入AuthorizationInfo认证对象        info.setStringPermissions(menus);        return info;    }     * 登录认证    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {        if (StringUtils.isEmpty(authenticationToken.getPrincipal())) {            return null;        }        //获取用户信息        String username = authenticationToken.getPrincipal().toString();        if (username == null || username.length() == 0)        {        SysUser user = sysUserService.getUserByName(username);        if (user == null)            throw new UnknownAccountException(); //未知账号        //判断账号是否被定,状态(0:禁用;1:锁定;2:启用)        if(user.getStatus() == 0)            throw new DisabledAccountException(); //帐号禁用        if (user.getStatus() == 1)            throw new LockedAccountException(); //帐号锁定        //盐        String salt = "123456";        //验证        SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(                username, //用户名                user.getPassword(), //密码                ByteSource.Util.bytes(salt), //盐                getName() //realm name        );        return authenticationInfo;    public static void main(String[] args) {        String originalPassword = "123456"; //原始密码        String hashAlGorithmName = "MD5"; //加密方式        int hashIterations = 2; //加密的次数        //加密        SimpleHash simpleHash = new SimpleHash(hashAlgorithmName, originalPassword, salt, hashIterations);        String encryptionPassword = simpleHash.toString();        //输出加密密码        System.out.println(encryptionPassword);}

5.登录控制器:

import lombok.extern.slf4j.Slf4j;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.*;import org.apache.shiro.subject.Subject;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.util.StringUtils;import org.springframework.web.bind.annotation.*;@Controller@Slf4jpublic class LoginController {        @GetMapping(value={"/", "/login"})    public String login(){        return "admin/loginPage";    }     * 登录操作    @RequestMapping("/loginSubmit")    public String login(String username, String password, ModelMap modelMap)    {        //参数验证        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))        {            modelMap.addAttribute("message", "账号密码必填!");            return "admin/loginPage";        }        //账号密码令牌        AuthenticationToken token = new UsernamePasswordToken(username, password);        //获得当前用户到登录对象,现在状态为未认证        Subject subject = SecurityUtils.getSubject();        try            //将令牌传到shiro提供的login方法验证,需要自定义realm            subject.login(token);            //没有异常表示验证成功,进入首页            return "admin/homePage";        catch (IncorrectCredentialsException ice)            modelMap.addAttribute("message", "用户名或密码不正确!");        catch (UnknownAccountException uae)            modelMap.addAttribute("message", "未知账户!");        catch (LockedAccountException lae)            modelMap.addAttribute("message", "账户被锁定!");        catch (DisabledAccountException dae)            modelMap.addAttribute("message", "账户被禁用!");        catch (ExcessiveAttemptsException eae)            modelMap.addAttribute("message", "用户名或密码错误次数太多!");        catch (AuthenticationException ae)            modelMap.addAttribute("message", "验证未通过!");        catch (Exception e)        //返回登录页     * 登出操作    @RequestMapping("/logout")    public String logout()        //登出清除缓存        subject.logout();        return "redirect:/login";}

6.前端登录页面:

<div>        <div><p>cxh电商平台管理后台</p></div>        <div>            <fORM name="loginForm" method="post" action="/cxh/loginSubmit" onsubmit="return SubmitLogin()" autocomplete="off">                <input type="text" name="username" placeholder="用户名"/>                <input type="password" name="password" placeholder="密码" autocomplete="on">                <span>${message}</span>                <input type="submit" value="登录"/>            </form>        </div>    </div>
//提交登录function SubmitLogin() {    //判断用户名是否为空    if (!loginForm.username.value) {        alert("请输入用户姓名!");        loginForm.username.focus();        return false;    }    //判断密码是否为空    if (!loginForm.password.value) {        alert("请输入登录密码!");        loginForm.password.focus();        return false;    }    return true;}

上述内容就是springboot如何整合shiro实现登录验证授权的过程解析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: springboot如何整合shiro实现登录验证授权的过程解析

本文链接: https://lsjlt.com/news/321459.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot整合shiro实现登录验证授权的过程解析
    springboot整合shiro实现登录验证授权,内容如下所示: 1.添加依赖: <!-- shiro --> <dependency> ...
    99+
    2024-04-02
  • springboot如何整合shiro实现登录验证授权的过程解析
    本篇文章为大家展示了springboot如何整合shiro实现登录验证授权的过程解析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。springboot整合shiro实现登录验证授权,内容如下所示:1...
    99+
    2023-06-29
  • Springboot整合Shiro怎么实现登录与权限校验
    这篇文章主要介绍“Springboot整合Shiro怎么实现登录与权限校验”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Springboot整合Shiro怎么实现登录与权限校验”文章能帮助大家解决问...
    99+
    2023-06-30
  • springboot怎么整合shiro实现多验证登录功能
    这篇“springboot怎么整合shiro实现多验证登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springbo...
    99+
    2023-06-08
  • Springboot整合Shiro实现登录与权限校验详细解读
    目录Springboot-cli 开发脚手架系列简介前言1. 环境2. 简介3. Realm配置4. 核心配置5. 接口编写6. 网页资源7. 效果演示8. 源码分享Springbo...
    99+
    2024-04-02
  • 【Springboot】整合wxjava实现 微信小程序:授权登录
    文章目录 一、wxjava是什么二、使用步骤1.引入依赖2.配置yml3.小程序的配置4.后端的业务逻辑代码controllerserviceimpldto 5.前端的业务逻辑代码新建...
    99+
    2023-09-09
    微信小程序 spring boot 小程序
  • springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)
    1. 首先新建一个shiroConfig shiro的配置类,代码如下: @Configuration public class SpringShiroConfig { ...
    99+
    2024-04-02
  • vue+springboot如何实现登录验证码
    这篇文章主要介绍vue+springboot如何实现登录验证码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先看效果图在login页面添加验证码html在后端pom文件添加kaptcha依赖<dependenc...
    99+
    2023-06-15
  • 详解SpringBoot如何实现整合微信登录
    目录1.准备工作1.1 获取微信登录凭证1.2 配置文件1.3 添加依赖1.4 创建读取公共常量的工具类1.5 HttpClient工具类2.实现微信登录2.1 具体流程2.2 生成...
    99+
    2024-04-02
  • SpringBoot登录验证token拦截器如何实现
    这篇文章主要讲解了“SpringBoot登录验证token拦截器如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot登录验证token拦截器如何实现”吧!用户访问接口验...
    99+
    2023-07-02
  • SpringBoot整合token实现登录认证的示例代码
    1.pom.xml <dependencies> <dependency> <groupId>org.springframework.b...
    99+
    2024-04-02
  • 微信小程序如何实现授权登录
    这篇文章给大家分享的是有关微信小程序如何实现授权登录的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入...
    99+
    2024-04-02
  • 如何实现小程序授权登录功能
    这篇文章主要介绍“如何实现小程序授权登录功能”,在日常操作中,相信很多人在如何实现小程序授权登录功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现小程序授权登录功能”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
  • SpringBoot如何整合Springsecurity实现数据库登录及权限控制
    目录第一步第二步是封装一个自定义的类第三步, 我们需要判断密码啦总结我们今天使用SpringBoot来整合SpringSecurity,来吧,不多BB 首先呢,是一个SpringBo...
    99+
    2024-04-02
  • 如何在SpringBoot中使用Shiro怎么实现一个邮件验证码登录功能
    如何在SpringBoot中使用Shiro怎么实现一个邮件验证码登录功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。导入依赖(pom.xml)  &...
    99+
    2023-06-06
  • SpringBoot整合Sa-Token实现登录认证的示例代码
    目录依赖登录退出登录前后端分离今天分享的是 Spring Boot 整合 Sa-Token 实现登录认证。 依赖 首先,我们需要添加依赖: 关...
    99+
    2024-04-02
  • 如何实现微信小程序之授权登录
    这篇文章主要介绍如何实现微信小程序之授权登录,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实现思路自己写一个微信授权登录页面让用户实现点击的功能,也就是实现了通过 button 组件去触发 getUserInof...
    99+
    2023-06-14
  • 如何实现OAuth2.0授权系统的验证码功能
    这篇文章主要介绍了如何实现OAuth2.0授权系统的验证码功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文:我这套系统授权基于OAuth3.0实现,登录的是http:/...
    99+
    2023-06-15
  • php如何实现app的验证登录
    这篇文章主要介绍了php如何实现app的验证登录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现app的验证登录文章都会有所收获,下面我们一起来看看吧。一、前置知识熟悉PHP语言基础熟悉HTTP请求...
    99+
    2023-07-05
  • 如何实现uni-app微信小程序授权登录
    小编给大家分享一下如何实现uni-app微信小程序授权登录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、appID相关申请和配置1. appid获取方式登录微...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作