Shiro 安全框架1—简介、核心组件与架构

shiro安全框架初识--shiro简介、认证与授权 Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和session会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架spring security,Shiro 要简单的多.Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。... 阅读详情

Shiro 安全框架1—简介、核心组件与架构

一、简介

1.1 概述

Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的 Java 安全框架,可以干净地处理身份验证,授权,企业会话管理,单点登录和加密服务,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。

1.2 特点

Apache Shiro的首要目标是易于使用和理解。安全有时可能非常复杂,甚至会很痛苦,但这不是必须的。框架应尽可能掩盖复杂性,并公开干净直观的API,以简化开发人员确保其应用程序安全的工作。

  • 易于使用 - 易用性是这个项目的最终目标。应用安全有可能会非常让人糊涂,令人沮丧,并被认为是“必要之恶”【译注:比喻应用安全方面的编程。】。若是能让它简化到新手都能很快上手,那它将不再是一种痛苦了。
  • 广泛性 - 没有其他安全框架可以达到 Apache Shiro 宣称的广度,它可以为你的安全需求提供“一站式”服务。
  • 灵活性 - Apache Shiro 可以工作在任何应用环境中。虽然它工作在 Web、EJB 和 IoC 环境中,但它并不依赖这些环境。Shiro 既不强加任何规范,也无需过多依赖。
  • Web 能力 - Apache Shiro 对 Web 应用的支持很神奇,允许你基于应用 URL 和 Web 协议(如 REST)创建灵活的安全策略,同时还提供了一套控制页面输出的 JSP 标签库。
  • 可插拔 - Shiro 干净的 API 和设计模式使它可以方便地与许多的其他框架和应用进行集成。你将看到 Shiro 可以与诸如 Spring、Grails、Wicket、Tapestry、Mule、Apache Camel、Vaadin 这类第三方框架无缝集成。
  • 支持 - Apache Shiro 是 Apache 软件基金会成员,这是一个公认为了社区利益最大化而行动的组织。项目开发和用户组都有随时愿意提供帮助的友善成员。像 Katasoft 这类商业公司,还可以给你提供需要的专业支持和服务。
1.3 主要功能
  • 验证用户身份以验证其身份
  • 对用户执行访问控制,例如:
    • 确定是否为用户分配了特定的安全角色确定是否允许用户执行某项操作
    • 即使在没有Web或EJB容器的情况下,也可以在任何环境中使用Session API。
  • 在身份验证,访问控制或会话的生存期内对事件做出反应。
  • 汇总1个或更多用户安全数据的数据源,并将其全部显示为单个复合用户“视图”。
  • 启用单点登录(SSO)功能
  • 启用“记住我”服务以进行用户关联,而无需登录
  • 以及更多-所有功能都集成到了易于使用的内聚性API中。

二、Shiro核心组件

shiro 组件
Shiro以Shiro开发团队所谓的“应用程序安全性的四个基石”为目标-身份验证,授权,会话管理和密码术:

  • Authentication,身份验证:有时称为“登录”,这是证明用户就是他们所说的身份的行为。
  • Authorization,授权:访问控制的过程,即确定“谁”有权访问“什么”。
  • Session Management,会话管理:即使在非Web或EJB应用程序中,也可以管理用户特定的会话。
  • Cryptography密码术:使用密码算法保持数据安全,同时仍然易于使用。

在不同的应用程序环境中,还具有其他功能来支持和加强这些问题,尤其是:

  • Web 支持:Shiro的网络支持API可帮助轻松保护网络应用程序。
  • Caching,缓存:缓存是Apache Shiro API的一线公民,可确保安全操作保持快速有效。
  • Concurrency,并发性:Apache Shiro的并发功能支持多线程应用程序。
  • Testing,测试:测试支持可帮助您编写单元测试和集成测试,并确保您的代码将按预期进行保护。
  • “Run As,运行方式”:一种功能,允许用户采用其他用户的身份(如果允许),有时在管理方案中很有用。
  • “Remember Me记住我”:记住用户在各个会话中的身份,因此他们只需要在必要时登录即可。

注意:shiro不会维护用户与权限,需要程序员自己维护并通过相应的接口注入给shiro。

三、Shiro架构

shiro架构图
在最高概念级别上,Shiro的体系结构具有3个主要概念:Subject(主题),SecurityManager(安全管理器)和Realms(领域)。

  • **Subject **: **Subject **本质上是当前执行用户的特定于安全性的“视图”。 “用户”一词通常表示一个人,而 **Subject **可以是一个人,但它也可以表示第三方服务,守护程序帐户,cron作业或任何类似的东西-基本上是当前与该软件交互的任何东西。 **Subject **实例都绑定到(并需要)SecurityManager。 与 **Subject **进行交互时,这些交互会转换为与SecurityManager特定的 **Subject **交互。

  • SecurityManager:SecurityManager是Shiro体系结构的核心,并充当一种“伞”对象,该对象协调其内部安全组件,这些安全组件共同构成一个对象图。 但是,一旦为应用程序配置了SecurityManager及其内部对象图,通常就不理会它,并且应用程序开发人员几乎将所有时间都花在**Subject **的API上。

    重要的是要认识到,当您与Subject进行交互时,实际上是在幕后的SecurityManager会对任何 Subject安全操作进行所有繁重的工作。

  • Realms:Realms充当Shiro与应用程序的安全数据之间的“桥梁”或“连接器”。 当真正需要与安全性相关的数据(如用户帐户)进行交互以执行身份验证authentication (登录)和授权authorization (访问控制)时,Shiro会从为应用程序配置的一个或多个Realms中查找许多此类内容。

    从这个意义上说,领域本质上是特定于安全性的DAO:它封装了数据源的连接详细信息,并根据需要使关联数据可供Shiro使用。 在配置Shiro时,您必须至少指定一个领域用于身份验证和/或授权。 SecurityManager可以配置有多个领域,但至少需要一个。

    Shiro提供了开箱即用的领域,可以连接到许多安全数据源,例如LDAP,关系数据库(JDBC),文本配置源(例如INI和属性文件)等。 如果默认的Realms不能满足您的需求,那么您可以插入自己的Realm实现以表示自定义数据源。

    像其他内部组件一样,Shiro SecurityManager管理领域如何用于获取要表示为Subject实例的安全性和身份数据。

四、详细架构

详细架构图

  • Subject (org.apache.shiro.subject.Subject)
    当前与软件进行交互的实体(用户,第三方服务,计划任务等)的特定于安全性的“视图”。
  • SecurityManager (org.apache.shiro.mgt.SecurityManager)
    SecurityManager是Shiro架构的核心。 它主要是一个“伞”对象,用于协调其托管组件以确保它们能够顺利协作。 它还管理Shiro对每个应用程序用户的视图,因此它知道如何对每个用户执行安全操作。
  • Authenticator (org.apache.shiro.authc.Authenticator)
    Authenticator是负责执行用户的身份验证(登录)并对其作出反应的组件。 当用户尝试登录时,该逻辑由身份验证器执行。 身份验证器知道如何与存储相关用户/帐户信息的一个或多个领域协调。 从这些领域获得的数据用于验证用户的身份,以确保用户确实是他们所说的真实身份。
    • Authentication Strategy (org.apache.shiro.authc.pam.AuthenticationStrategy)
      如果配置了多个Realm ,则AuthenticationStrategy会协调Realm 以确定身份验证尝试成功或失败的条件(例如,如果一个Realm 成功而其他Realm 失败,则尝试成功吗?必须所有Realm 都成功吗? 第一?)。
  • Authorizer (org.apache.shiro.authz.Authorizer)
    Authorizer 授权者是负责确定应用程序中用户访问控制的组件。 它是最终表明是否允许用户做某事的机制。 与身份验证器一样,授权者也知道如何与多个后端数据源进行协调以访问角色和权限信息。 授权者使用此信息来确定是否允许用户执行给定的操作。
  • SessionManager (org.apache.shiro.session.mgt.SessionManager)
    SessionManager知道如何创建和管理用户会话生命周期,以便为所有环境中的用户提供可靠的会话体验。 这是安全框架领域中的一项独特功能-Shiro能够在任何环境中本地管理用户会话,即使没有Web / Servlet或EJB容器也可以。 默认情况下,Shiro将使用现有的会话机制(例如Servlet容器)(如果可用),但是如果没有这种机制(例如在独立应用程序或非Web环境中),它将使用其内置的企业会话管理来 提供相同的编程经验。 SessionDAO的存在是为了允许使用任何数据源来保留会话。
  • CacheManager (org.apache.shiro.cache.CacheManager)
    CacheManager创建和管理其他Shiro组件使用的Cache实例生命周期。 因为Shiro可以访问许多后端数据源以进行身份验证,授权和会话管理,所以缓存一直是框架中的一流架构功能,可以在使用这些数据源时提高性能。 可以将任何现代的开源和/或企业缓存产品插入Shiro,以提供快速有效的用户体验。
  • Cryptography (org.apache.shiro.crypto.*)
    密码术是企业安全框架的自然补充。 Shiro的加密软件包包含易于使用和理解的加密密码,哈希(又名摘要)和不同编解码器实现的表示形式。 该软件包中的所有类都经过精心设计,以使其易于使用和理解。 使用Java的本机加密技术支持的任何人都知道,驯服它可能是具有挑战性的动物。 Shiro的加密API简化了复杂的Java机制,并使加密技术易于为普通凡人使用。
  • Realms (org.apache.shiro.realm.Realm)
    领域充当Shiro与应用程序的安全数据之间的“桥梁”或“连接器”。 当真正需要与安全性相关的数据(如用户帐户)进行交互以执行身份验证(登录)和授权(访问控制)时,Shiro会从为应用程序配置的一个或多个Realms中查找许多此类内容。 您可以根据需要配置任意多个领域(通常每个数据源一个),并且Shiro将根据需要与它们进行协调,以进行身份验证和授权。

五、参考

https://shiro.apache.org

Java Shiro 安全框架:(一)Shiro 的简介 Shiro 的简介1.为什么学习 Shiro2.解决的方案3.什么是 shiro4.Shiro 中的体系的组成5.shiro 的架构 1.为什么学习 Shiro 目前使用遇到的问题? 使用 RBAC 进行角色访问控制的时候,代码书写起来相对比较麻烦 目前学习的写的操作代码整体不太安全 2.解决的方案 Spring securing 安全框架 缺点:基于 Spring 之上的,局限性比较大 shiro javaEE javaSE 分布式项目 3.什么是 shiro Apache Shiro 是一个强 阅读详情

相关推荐

带你掌握springboot集成shiro安全框架

springboot集成Apache Shiro安全框架,拿捏它!!!

干货分享,希望帮助读者不断提升自己的编程技能,解决工作中实际问题,并激发对技术的无限热爱。 935

《深入解析Windows操作系统》安全性

内容总结: 安全系统组件 以下是实现 Windows安全性的核心组件和数据库。 1. 安全引用监视器(SRM) 2. 本地安全权威子系统(LSASS) 3. LSASS策略数据库 4. 安全账户管理器(SAM)服务 5. SAM数据库 6. 活动目录 7. 认证包 8. 交互式登录管理器 9. 登录用户界( LogonUI) 10. 凭证提供者 11. 网络登录服务( Netiogon 12. 内核安全设备驱动程序(KSecDD) 13. AppLocker这是一种机制,它允许管理员指定哪些可执行文

weixin_45239587的博客 1476

Apache Shiro安全框架实战教程

Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,广泛应用于企业级应用中,用于处理认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)等核心安全需求。其设计目标是简化安全控制的实现,同时保持高度的灵活性与可扩展性。Shiro 的核心架构采用模块化设计,主要包括Subject、SecurityManager 和 Realm三大组件。其中,Subject。

weixin_42576410的博客 1034

SaaS架构

SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。SaaS这个说法是区别于以往软件购买和交付方式而提出来的。在以前,你公司要使用一款软件来管理财务记账的时候,那你要向软件提供公司说明需求、支付购买软件的钱并提供安装软件的硬件环境,然后软件公司就会上门...

培根芝士的专栏 6629

AMBA总线—APB总线协议详解

文章目录一、APB总线介绍1.1.什么是APB总线1.2.典型的基于 AMBA 总线的系统架构1.3.APB信号列表(重点)二、APB总线传输(时序)2.1.APB 状态机2.2.写操作(重要)2.3.读操作(重要)2.4.APB组件接口(重要)2.4.1.APB Bridge框图2.4.2.APB Slave框图三、APB到AHB的接口3.1.读操作3.2.写操作3.3.读写交替传送 一、APB...

Mr.翟的博客 4万+

反激系列-详细到每个容阻的原理之RCD吸收(1)

1、漏感尖峰电压会被RCD吸收,漏感能量一定,电容越大,电容充电的电压就越低,吸收能力就越强,MOS漏极的电压就越低。2、在漏感能力释放完之后(这个过程一般只有一个周期的3%时间),是要通过R1释放掉电容吸收的能量的,把电容的电压降下来方便下一次漏感尖峰来之前再进行吸收。3、电容容量和电阻需要合理搭配,容量足够即可,足够能吸收漏感尖峰电压,不至于超过MOS耐压。电阻需要足够小,小到在放电阶段把电容电压下降到MOS的电压平台。

Cuxiaoweiba的博客 3万+

SpringCloud的五大组件详解

首先看一张springCloud的图片: 二、简单介绍下什么是springCloud “Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。” -----来自官网 三、为了方便理解假设一

weixin_46115725的博客 1万+

【通信协议】GATT 与 BLE HID 工作原理详解

详细介绍BLE HID 跟GATT工作原理与两者的交互关系

以实战经验介绍行业知识 843

技术架构基础组件简介

传统企业大多采用集中式架构,技术体系相对落后,可扩展能力不强。集中式架构过于依赖设备资源,基于稳定或性能考虑,大多运行在大型机或小型机上。同时,传统企业多采用“两地三中心”的容灾模式高可用能力不强,难以实现多中心多活,也容易带来资源浪费的问题。在运维能力上,过于依赖人工,难以实现自动化运维,面对突发高频访问的业务场景不能实现自动弹性伸缩。当业务量到达一定规模后,集中式数据库的容量利性能问题也容易成为业务发展的瓶颈。总而言之,传统的集中式架构技术体系已经难以适应新形式下的业务发展要求。

weixin_43485035的博客 1989

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 153

STM32+ESP8266+MQTT协议连接阿里云物联网平台

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 开发软件:keil5 二、实现功能 通过阿里云物联网服务器实现设备数据远程上传、下发,实现数据交互。 在当前使用的开发板上有4盏LED灯、一个蜂鸣器、4个按键。 三、阿里云物联网服务器创建步骤 说明:如果没有账号的话,先点击网页右上角,注册一个账号,并完成实名认证再继续下一步。 产品名称根据自己情况填...

6万+

Shiro框架

1.Shiro概述 2.Shiro流程 3.Shrio架构 4.Shiro拦截实现 5.Shiro认证实现 6.Shiro退出实现 7.Shiro授权实现 8.Shiro缓存配置 9.Shiro记住我功能 10.Shiro会话管理 11.shiro在springboot中的改进

weixin_50756063的博客 323

基于STM32设计的猪舍养殖的监控系统_325

本课题基于STM32单片机,设计一款能够实时监测猪舍环境的智能监控系统。该系统能够通过温湿度、空气质量、光照强度等传感器实时监测猪舍的环境,并能够通过自动化控制设备(如风扇、照明灯、消毒喷雾等)调节环境参数,确保养殖环境的适宜性。同时,系统还支持通过ESP8266模块实现数据上传与远程控制,使养殖管理者能够通过手机APP或计算机远程监控和控制猪舍环境。

408

Shiro安全框架学习

Shiro安全框架学习一、shiro简介(简介内容来自百度百科)二、学习目标三、shiro与spring Security的比较(spring的官网也是用shiro做安全管理的)四、Shiro的整体架构五、Shiro的认证六、Shiro的授权七、Shiro自定义Realm八、自定义Realm九、Shiro的加密 一、shiro简介(简介内容来自百度百科) Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得

adminwxc的博客 3117

全志A527 T527 android13支持usb摄像头

我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。

zhutoubenben的专栏 964

枪支/刀具检测 (gun, knife) - SIXray, Clasp Dataset,YOLOv11+UI界面+数据集

python复制编辑# 计算 CIoU 损失。

YOLO 539

Java工具06-Java安全框架:Spring Security与Shiro

本文对比了Java两大主流安全框架Spring Security和Apache Shiro的核心差异。Spring Security深度集成Spring生态,采用过滤器链模型,提供细粒度安全控制,适合企业级应用;Shiro则以简洁API和模块化设计见长,通过Subject-SecurityManager-Realm三层模型实现轻量级安全方案。两者在认证授权机制、会话管理、扩展性等方面各有优势,开发者应根据项目规模、技术栈和复杂度需求进行选择。文章包含详细架构图解和典型代码示例,为技术选型提供实践参考。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

安全框架 Shiro 和 Spring Security 如何选择?

点击上方"程序员的成长之路",选择"置顶或星标"你关注就是我关心的!安全框架安全框架,简单说是对访问权限进行控制,应用的安全性包括用户认证(Authentication)...

良月柒 4万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

shiro一款简易的Java安全框架

这两天因为项目中一直有用到shiro这款框架,所以也是趁着休息的时间好好补课一下shiro。 一、什么是shiro? shiro是一个强大的Java安全框架,执行身份验证。授权、密码和会话管理的。使用shiro易于理解API,可以非常方便的集成到任何应用程序中。 在这里也说明一下:后续会写关于Spring Security这款安全框架,两者在功能上是非常类似的,所以在学习完一种后最后把另一种也学习一下。 二、shiro的三大核心组件 1、subject:简单理解为表示当前操作用户。其实它的深层表达的意思是第

木兮兮 2078

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

shiro安全框架

intellij idea的配置使用教程IDEA的配置intellij idea快捷键 欢迎使用intellij idea IDEA的配置 一、全局JDK设置 二、主题和字体设置 主题设置在:“File | Settings | Appearance & Behavior | Appearance“” 字体设置在:"Editor"的"Font"中,分别设置编辑器字体、字号、行间距 三、3、设置控制台字体 控制台字体和编辑器字体设置一个逻辑,设置在:"Editor"下"Color Scheme"的

qq_44496147的博客 487

Shiro安全框架

身份认证 / 登录,验证用户是不是拥有相应的身份;:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的;:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;:Web 支持,可以非常容易的集成到 Web 环境;Caching。

刻苦的樊同学 844

03-Apache Shiro 安全框架(练一个)

Shiro安全框架简介 Shiro概述 Shiro是apache旗下一个开源安全框架,它对软件系统中的安全认证相关功能进行了抽封装,实现了用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 用户在进行资源访问时,要求系统要对用户进行权限控制,其具体流程如图所示: Shiro概要架构 在概念层面,Shiro 架构包含三个主要的理念,如图所示: 其中: Subject :主体对象,负责提交用户认证和授权信息。

雨田说码 4803

【Shiro】Shiro简介以及快速入门

【Shiro】Shiro简介以及快速入门1. Shiro简介2. Shiro三大核心组件3. Shiro架构4. Shiro相关类介绍5. Shiro的特点6. Shiro快速入门 1. Shiro简介 Apache Shiro是Java的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。 实际上,Shiro的主要功能是管理应用程序中与安全相关的全部,同时尽可能支持多种实现方法。Shiro是建立在完善的接口驱动设计和面向对象原则之上的,

来日浅谈的博客 914

Shiro和Spring Security安全框架对比

Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单。与Spring Security对比,Shiro可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。下面对这两个安全框架进行了对比,可以根据你的项目需要选出适合的安全框架。

Java+GO+JS全栈工程师-鹤冲天的博客:编程辅导~商务合作~技术交流 3406

Shiro(1)--Shiro简介

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 一、作用简介 Apache Shiro是一个强大且易用的Java安全框架,可以执行身份验证、授权、密码学和会话管理。 二、功能简介 Authentication:身份认证/登录,验证用户是不是拥有相应的身份。 Authorization:授权,即权限认证...

至尊宝 2万+

spring-boot整合shiro安全框架

安全是很要考虑的问题,shiro安全框架可定制性高,可以更好地起到安全和拦截、授权的作用

qiumin的博客 2848
上一篇: Could not create connection to database server. Attempted reconnect 3 times.
下一篇: Mysql 5.7版本安装与问题总结
Litepal
博客等级 码龄12年 17粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值