教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

天富娱乐注册最新网址 永乐app下载软件

更新时间:2018年08月31日14时01分 来源:永乐app下载软件 浏览次数:

一、Shiro介绍

1、Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。

2、使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序

二、Shiro体系结构

1、 Authentication 认证 ‐‐‐‐ 用户登录,身份识别

2、 Authorization 授权 ‐‐‐ 用户具有哪些权限、角色

3、 Cryptography 安全数据加密

4、 Session Management 会话管理

5、 Web Integration web 系统集成

6、 Integrations 集成其它应用, spring、缓存框架

三、Shiro主要运行流程

应用程序 ‐‐‐ Subject ‐‐‐ SecurityManager ‐‐‐ Realm ‐‐‐ 安全数据(数据库)

Subject介绍:

1、Subject 是与程序进行交互的对象,可以是人也可以是服务或者其他,通常就理解为用户。

2、所有 Subject 实例都被绑定到(且这是必须的)一个 SecurityManager 上。当你与一个Subject 交互时,那些交互作用转化为与 SecurityManager 交互的特定 subject 的交互作用。

SecurityManager介绍:

1、SecurityManager 是 Shiro的核心,初始化时协调各个模块运行。然而,一旦 SecurityManager协调完毕,SecurityManager 会被单独留下,且我们只需要去操作Subject即可,无需操作SecurityManager 。

2、当我们正与一个 Subject 进行交互时,实质上是 SecurityManager在处理 Subject 安全操作。

Realm介绍:

1、Realms 担当 Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时, Shiro 从一个或多个为应用程序配置的Realm 中寻找许多这样的东西。

2、在这个意义上说, Realm 本质上是一个特定安全的 DAO:它封装了数据源的连接详细信息,使 Shiro 所需的相关的数据可用。当配置 Shiro 时,你必须指定至少一个 Realm 用来进行身份验证和/或授权。 SecurityManager可能配置多个 Realms,但至少有一个是必须的

四、Shiro的使用

1、 配置 web.xml,增加shiro的Filter

2、在spring配置文件中,增加shiro的相关配置

shiroFilter

org.springframework.web.filter.DelegatingFilterProxy

shiroFilter

/*

class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">

/login.html* = anon

/user_login.action* = anon

/validatecode.jsp* = anon

/css/** = anon

/js/** = anon

/images/** = anon

/services/** = anon

/pages/base/courier.html* = perms[courier:list]

/pages/base/area.html* = roles[base]

/** = authc

class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090

3、编写realm

public class BosRealm extends AuthorizingRealm {

@Autowired

private UserService userService;

@Autowired

private RoleService roleService;

@Autowired

private PermissionService permissionService;

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) {

System.out.println("shiro 授权管理...");

SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();

Subject subject = SecurityUtils.getSubject();

User user = (User) subject.getPrincipal();

List roles = roleService.findByUser(user);

for (Role role : roles) {

authorizationInfo.addRole(role.getKeyword());

} /

/ 调用业务层,查询权限

List permissions = permissionService.findByUser(user);

for (Permission permission : permissions) {

authorizationInfo.addStringPermission(permission.getKeyword());

} r

eturn authorizationInfo;

} @

Override

protected AuthenticationInfo doGetAuthenticationInfo(

AuthenticationToken token) throws AuthenticationException {

System.out.println("shiro 认证管理... ");

UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;

User user = userService.findByUsername(usernamePasswordToken

.getUsername());

if (user == null) {

北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090

五、权限控制表结构

return null;

} else {

一致

return new SimpleAuthenticationInfo(user, user.getPassword(),

getName());

}

}

}



作者: 永乐app下载软件JavaEE培训学院
首发:http://java.tianfu2024.sbs

0 分享到:
和我们在线交谈!