Apache Shiro在web开发安全技术中的应用

简介: shiro安全框架是目前为止作为登录注册最常用的框架,因为它十分的强大简单,提供了认证、授权、加密和会话管理等功能 。

前阶段就hadoop的分享了一些内容,希望对新手入门的朋友有点帮助吧!对于hadoop新手入门的,还是比较推荐大快搜索的DKHadoop发行版,三节点标准版还是值得拥有的(三节点的标准版是可以免费下载的,与付费版的目前功能一样,只是节点数量不同,对于新手而言三节点的够用了)。正在学习hadoop可以下载一下研究学习之用,也可以留言向我索要!

a153c8b35a82b43118f2a3d5ab2fe49655e15f0d

今天准备分享一下Apache Shiro 在web开发中的应用。shiro安全框架是目前为止作为登录注册最常用的框架,因为它十分的强大简单,提供了认证、授权、加密和会话管理等功能 。

shiro能做什么?

认证:验证用户的身份

授权:对用户执行访问控制:判断用户是否被允许做某事

会话管理:在任何环境下使用 Session API,即使没有 Web 或EJB 容器。

加密:以更简洁易用的方式使用加密功能,保护或隐藏数据防止被偷窥

Realms:聚集一个或多个用户安全数据的数据源

 单点登录SSO)功能。

为没有关联到登录的用户启用 "Remember Me“ 服务

Shiro 的四大核心部分

Authentication(身份验证):简称为“登录”,即证明用户是谁。

Authorization(授权):访问控制的过程,即决定是否有权限去访问受保护的资源。

Session Management(会话管理):管理用户特定的会话,即使在非 Web 或 EJB 应用程序。

Cryptography(加密):通过使用加密算法保持数据安全

shiro的三个核心组件:     

Subject :正与系统进行交互的人,或某一个第三方服务。所有 Subject 实例都被绑定到(且这是必须的)一个SecurityManager 上。

SecurityManagerShiro 架构的心脏,用来协调内部各安全组件,管理内部组件实例,并通过它来提供安全管理的各种服务。当 Shiro 与一个 Subject 进行交互时,实质上是幕后的 SecurityManager 处理所有繁重的 Subject 安全操作。

Realms :本质上是一个特定安全的 DAO。当配置 Shiro 时,必须指定至少一个 Realm 用来进行身份验证和/或授权。Shiro 提供了多种可用的 Realms 来获取安全相关的数据。如关系数据库(JDBC),INI 及属性文件等。可以定义自己 Realm 实现来代表自定义的数据源。

shiro整合SSM框架:

1.加入 jar

e53d2d7c1796484909bf832b9cdf8c7ad361c6c6 

2.配置 web.xml 文件

    web.xml中加入以下代码—shiro过滤器。

<filter>

<filter-name>shiroFilter</filter-name>

<filter-class>

org.springframework.web.filter.DelegatingFilterProxy

</filter-class>

    <init-param>

        <param-name>targetFilterLifecycle</param-name>

        <param-value>true</param-value>

     </init-param>

</filter>

<filter-mapping>

     <filter-name>shiroFilter</filter-name>

     <url-pattern>/*</url-pattern>

</filter-mapping>

 

 

3.Spring 的配置文件中配置 Shiro

Springmvc配置文件中:

2d4a60bb94f21095e85d1ea12dcb5630c30d4af9 

Spring配置文件中导入shiro配置文件:

<!-- 包含shiro的配置文件 -->

          <import resource="classpath:applicationContext-shiro.xml"/>新建applicationContext-shiro.xml

 

8e2bb5ab27a99252322ee599eefc61c5d0343e77 

 

293eeef15f43f902366bdcdc7d4b387f1ba094b0 

到这一步,配置文件都基本准备好了,接下来要写Realm方法了,新建shiro包,在包下新建MyRealm.java文件继承AuthorizingRealm

caf0fdd1914afedf99e80eb9959fd4b62b3bc21b 

ff4ec9cc6dab7482b4000e5f81b607f99f54e88a 

 

ee4074b04b70f99cfa86a713f74ad2f1609bc4af

以上配置已经完成,接下来通过action进行验证

//登录认证

    @RequestMapping("/shiro-login")

    public String login(@RequestParam("username") String username,

            @RequestParam("password") String password){

        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken(username, password);        

        try {

            //执行认证操作.

            subject.login(token);

        }catch (AuthenticationException ae) {

            System.out.println("登陆失败: " + ae.getMessage());

            return "/index";

        }

        return "/shiro-success";

    }

//提示:记得在注册中密码存入数据库前也记得加密哦,提供一个utils方法

//进行shiro加密,返回加密后的结果

public static String md5(String pass){

String saltSource = "blog";    

String hashAlgorithmName = "MD5";

Object salt = new Md5Hash(saltSource);

int hashIterations = 1024;    

Object result = new SimpleHash(hashAlgorithmName, pass, salt, hashIterations);

String password = result.toString();

return password;

}

shiro登录验证到这里完了,shiro主要是进行登陆认证,权限以及菜单模块的设置。

相关文章
|
7天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
21 3
|
7天前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
18小时前
|
存储 程序员 API
python web开发示例详解
python web开发示例详解
7 0
|
1天前
|
XML 前端开发 JavaScript
CSR(客户端渲染)和AJAX在Web开发中各自扮演不同的角色
【5月更文挑战第8天】CSR(客户端渲染)与AJAX在Web开发中各司其职。CSR提供初始HTML框架,通过JavaScript在浏览器端获取并渲染数据,提升交互性和响应速度。AJAX则实现页面局部更新,如实时搜索,不刷新页面即可获取数据。CSR可能因DOM操作多而引发性能问题,但可优化解决;AJAX适合频繁交互场景,提高响应性。两者在不同需求下各有优势,需按项目选择适用技术。
9 4
|
1天前
|
前端开发 搜索推荐 安全
AJAX和CSR(客户端渲染)是Web开发中常用的两种技术
【5月更文挑战第8天】AJAX提升用户体验,减轻服务器压力,但对搜索引擎不友好且增加开发复杂度,易引发安全问题。CSR提供快速响应和交互性,改善用户体验,但首屏加载慢,搜索引擎支持不足,同样面临安全挑战。两者各有适用场景,需按项目需求选择。
7 0
|
2天前
|
前端开发 JavaScript 开发者
新一代前端框架:革命性的Web开发利器
传统的前端框架在满足日益复杂的Web开发需求上逐渐显露出局限性,而新一代前端框架的出现,以其革命性的设计和功能,重新定义了Web开发的标准。本文将介绍这些新一代前端框架的特点和优势,并探讨它们在实际项目中的应用。
|
4天前
|
安全 测试技术 PHP
掌握现代Web开发:PHP 8的新特性与最佳实践
【5月更文挑战第5天】 在当今快速发展的网络世界中,PHP作为一种流行的服务器端脚本语言,持续地演化着。最新的PHP 8版本引入了一系列令人兴奋的新特性和性能改进,为开发者提供了更加强大和灵活的工具。本文将深入探讨PHP 8中的新特性,包括联合类型、名称参数、匹配表达式等,并分享一些最佳实践,帮助开发者提高代码质量,优化性能,并确保安全性。通过这些实用技巧和示例,您将能够构建更高效、更安全的PHP应用程序。
|
7天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
24 4
|
7天前
|
存储 前端开发 安全
13:会话跟踪技术Session的深度应用与实践-Java Web
13:会话跟踪技术Session的深度应用与实践-Java Web
23 3
|
7天前
|
存储 前端开发 搜索推荐
12:会话跟踪技术Cookie的深度应用与实践-Java Web
12:会话跟踪技术Cookie的深度应用与实践-Java Web
21 4

推荐镜像

更多