shiro android

shiro 实现自定义权限规则校验

时间 2014-07-10 15:37:17  CSDN博客

原文  http://blog.csdn.net/cml_blog/article/details/37657217

主题 AndroidJava

<span style="font-family: Arial, Helvetica, sans-serif;">在系统中使用shiro进行权限管理,当用户访问没有权限的资源时会跳转到指定的登录url。</span>

但是如果系统中支持手机app,手机访问时没有使用session进行登录凭证管理,而是使用token,有两种解决方法:

1:支持手机客户端访问的资源在权限配置中配置成anon

2:实现自定义认证拦截器,对用户请求资源进行认证

显然第一种方法不适用,这些资源应该只能让我们自己的app进行访问。

第二中实现方式:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    <property name="securityManager" ref="securityManager" />
    <!-- 登录的页面 -->
    <property name="loginUrl" value="/login/login.jsp" />
    <property name="successUrl" value="/success.jsp" />
    <property name="unauthorizedUrl" value="/error.jsp" />
    <property name="filterChainDefinitions">
      <value>
        /android.html**=anon
        /pets/android**=android
        /pets/login/**=anon
        /**=authc
      </value>
    </property>
    <property name="filters">
      <map>
        <entry key="android">
          <bean class="com.pets.shiro.filter.MobileTokenAuthentication">
          </bean>
        </entry>
        <entry key="authc">
          <bean class="com.pets.shiro.filter.LoginAuthenticationFilter">
          </bean>
          <!-- <bean class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
          </bean> -->
        </entry>
      </map>
    </property>
  </bean>
/pets/android**=android 指定认证的拦截器,这里是自定义的拦截器
<pre name="code" class="java">/**
 * 移动设备认证基类,提供未登录用户操作认证权限
 *
 * 2014年7月8日
 */
public abstract class AbstractMobileAuthenticationFilter extends
    AuthenticationFilter {

  public static final String TOKEN = "token";
  protected Logger log = Logger.getLogger(getClass());

  @Override
  protected boolean onAccessDenied(ServletRequest request,
      ServletResponse response) throws Exception {

    log.info("安卓用户进入校验!" + getLoginUrl());

    HttpServletRequest req = (HttpServletRequest) request;

    String token = req.getParameter(TOKEN);
    if (isAccess(token)) {
      return onAccessSuccess(req, (HttpServletResponse) response);
    }

    return onAccessFail(req, (HttpServletResponse) response);
  }

  /**
   * 判断token的合法性
   *
   * @param token
   * @return
   */
  public abstract boolean isAccess(String token);

  /**
   * 认证成功进行的操作处理
   *
   * @param request
   * @param response
   * @return true 继续后续处理,false 不需要后续处理
   */
  public abstract boolean onAccessSuccess(HttpServletRequest request,
      HttpServletResponse response);

  /**
   * 认证失败时处理结果
   *
   * @param request
   * @param response
   * @return true 继续后续处理,false 不需要后续处理
   */
  public abstract boolean onAccessFail(HttpServletRequest request,
      HttpServletResponse response);

}

只需要重写

onAccessDenied方法,进行token判断!

时间: 2024-12-16 07:56:27

shiro android的相关文章

支持APP手机应用(android和ios)接口调用 ,传输验证可用 shiro 的 MD5、SHA 等加密

请认准本正版代码,售后技术有保障,代码有持续更新.(盗版可耻,违者必究)         此为本公司团队开发 ------------------------------------------------------------------------------------------------------------------------- 1. 有 oracle .msyql.spring3.0.spring4.0  一共 4 套版本全部提供没有打jar没有加密的源代码(最下面截图2

shiro实现APP、web统一登录认证和权限管理

先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了web和APP都可以用shiro认证吗?两者有什么区别?如果可以,解决方案是什么?看着大家焦急的小眼神,接下来挨个解决上面的问题. web和APP可以用shiro统一登录认证吗? 可以.假如web和APP都使用密码登录的话,那没的说肯定是可以的,因为对于shiro(在此不会介绍shiro详细知识,只介

javaEE 后台框架 SpringMVC Mybatis Shiro Bootstrap HTML

升级报捷:通过服务于服务之间调用,生成二维码,可直接用户手机app(详细查看截图) 框架集成lucene搜索引擎,使您的信息在毫秒内抓取(详细查看截图) 1.  创建.初始化索引.统一搜索入口.搜索结果展现--内容.标题高亮.关键词搜索 2.  高级搜索:高级搜索增加多入口查询(精确查询.模糊查询.前缀查询等),每页显示条数自定义.索引结果数据设置.选择索引文档类型等 3. 通过A系统调用B系统的Rest服务,生成相关的二维码,可以直接用户手机app ----------------------

java 整合redis缓存 SSM 后台框架 rest接口 shiro druid

获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 B 集成阿里巴巴数据库连

java企业级框架 SpringMVC_mybatis or hibernate+ ehcache +shiro+druid+bootstrap+HTML5

获取[下载地址]   QQ: 313596790   [免费支持更新] 支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 代码生成器(开发利器);       增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成    就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接

ehcache配置:使用Spring+SpringMVC+Mybatis或者有shiro【转】

SSM框架的搭建就不在叙述了 本文主要是讲解在SSM基础上再加上ehcache 1:首先:pom.xml需要的jar <dependency>   <groupId>org.mybatis</groupId>   <artifactId>mybatis-ehcache</artifactId>   <version>1.0.0</version>  </dependency>  <dependency&g

springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】

项目结构: 1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <dependency>     <groupid>javax.servlet</groupid>     javax.servlet-api</artifactid>     <version>3.0.1</version>

SpringMVC + Mybatis + Shiro 权限整合【转】

<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"/> , 否则controller无法使用注解. 这个方法可能避免使用sessionValidationScheduler, 就是避免使用, 就能使用高版本的quartz了. 配置会话监听: Java代码   package com.pandy.core.security.session;

SpringMVC+Shiro权限管理【转】

1.权限的简单描述 2.实例表结构及内容及POJO 3.Shiro-pom.xml 4.Shiro-web.xml 5.Shiro-MyShiro-权限认证,登录认证 6.Shiro-applicationContext-shiro.xml 7.HomeController三个JSP文件 什么是权限呢?举个简单的例子:我有一个论坛,注册的用户分为normal用户,manager用户.对论坛的帖子的操作有这些:添加,删除,更新,查看,回复我们规定:normal用户只能:添加,查看,回复manage