大家都知道spring的用户登录拦截器,确实省去了程序员不少的精力,下面说说我在项目中使用的感受。

德安微信管理后台是管理多个微信帐号的平台,登录到平台的用户有三个角色,游客和微信帐号管理员、超级管理员。超级管理员负责建立新的微信帐号、建立新的微信帐号管理员;微信帐号管理员负责维护微信菜单;微信图文消息;处理微信事件,发布产品介绍专题等;游客的功能有浏览、下单、手机号绑定等。基于此我们分配了三个用户角色:ROLE_TRAVELER、ROLE_ADMIN、ROLE_SUPER分别对应游客、微信帐号管理员和超级管理员,每种角色登录后访问不同的首页。

首先在security.xml文件里增加:

<http auto-config="true" use-expressions="true">
<form-login login-page="/login" login-processing-url="/static/j_spring_security_check"
authentication-failure-url="/login" default-target-url="/admin/home" />
<logout logout-url="/static/j_spring_security_logout" />
<intercept-url pattern="/*/my/**" access="hasRole('ROLE_TRAVELER')" />
<intercept-url pattern="/admin/home" access="hasAnyRole('ROLE_SUPER,ROLE_ADMIN')" />
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/super/**" access="hasRole('ROLE_SUPER')" />
<intercept-url pattern="/menu/**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/event/**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/special/**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/media/**" access="hasRole('ROLE_ADMIN')" />
<remember-me key="travelerKey" token-validity-seconds="2419200" /> </http>

  注意<intercept-url pattern="/admin/home" access="hasAnyRole('ROLE_SUPER,ROLE_ADMIN')" />的access的值使用了hasAnyRole,配置了两个用户角色,另外登录后的默认首页都是 default-target-url="/admin/home"指向的“admin/home”,这样管理员和超级管理员用户登录后spring都会跳转到admin/home,在admin/home请求中获取用户角色,根据用户橘色在跳转到不同的首页,当然每类用户角色会有不同的模板区分,以保证用户功能和菜单不一致。

@RequestMapping("/home")
public String adminPage() {
  //获取用户角色
Set<String> roles = AuthorityUtils
.authorityListToSet(SecurityContextHolder.getContext()
.getAuthentication().getAuthorities());
  //根据用户角色跳转到不同的页面
  if (roles.contains("ROLE_ADMIN")) {
return this.REDIRECT + "/special/list";
  } else if (roles.contains("ROLE_SUPER")) {
return this.REDIRECT + "/super/home";
  }
return this.REDIRECT + "/";
}

  通过以上方法就实现了根据用户角色登录后跳转到不能的页面的效果。

spring登录验证拦截器和根据用户角色登录的更多相关文章

  1. SpringMVC拦截器(实现登录验证拦截器)

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...

  2. struts2学习(6)自定义拦截器-登录验证拦截器

    需求:对登录进行验证,用户名cy 密码123456才能登录进去:  登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...

  3. Spring Boot2.0拦截器简单实现判断是否登录

    在进行项目开发的时候使用springboot框架用到拦截器时发现2.0以后原来的抽象类WebMvcConfigurerAdapter已经过时了,去官网查文档2.x版本要实现拦截器功能改为需要继承Web ...

  4. taotao用户登录springMVC拦截器的实现

    在springMVC中写拦截器,只需要两步: 一.写 java 拦截器类,实现 interceptor 拦截器接口. 二.在 springMVC 的xml配置文件中,配置我们创建的拦截器对象及其拦截目 ...

  5. Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

    拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interce ...

  6. Spring MVC - 拦截器实现 和 用户登陆例子

    1.拦截器 SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等: public class HanderIntercept ...

  7. [转载] Spring MVC - 处理器拦截器

    5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.   ...

  8. Spring Mvc session拦截器实现

    Spring Mvc拦截器实现session过期跳转到登录页面 配置拦截器 <mvc:interceptors> <mvc:interceptor> <mvc:mappi ...

  9. spring mvc +cookie+拦截器功能 实现系统自动登陆

    先看看我遇到的问题: @ResponseBody @RequestMapping("/logout") public Json logout(HttpSession session ...

随机推荐

  1. 使用 MVVMLight 绑定数据

    如果你还不知道如何在VS中加入MVVMLight的引用,那么建议你先翻阅这篇文章:在VS中安装/使用 MVVMLight 这篇文章主要是介绍如何使用MVVMLight来绑定数据到界面中(View),以 ...

  2. case when 的实战应用(分别取图片展示问题)

    SELECT lg.product_id, lg.goods_id, lg.goods_no, lg.product_price, lg.product_stock, lg.limit_amount, ...

  3. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器[摘抄]

    [文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.s135.com/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Ngin ...

  4. canvas二:绘制圆和其他曲线

    1.绘制圆 绘制圆是canvas里面不可缺少的功课,而且绘制圆在canvas中的用处很多,好嘞,开扯 绘制圆需要用到arc这个方法: arc(X坐标,Y坐标,半径,起始弧度,结束弧度,旋转方向): 弧 ...

  5. 计算时间:一个C++运算符重载示例

    Time类是一个用于计算时间的类,其原型如下:程序清单11.1 mytime0.h // mytime0.h -- Time class before operator overloading #if ...

  6. cocos2dx游戏--欢欢英雄传说--添加血条

    用一个空血槽图片的Sprite做背景,上面放一个ProgressTimer, 通过设置ProgressTimer的进度来控制血条的长短.建立一个Progress类来实现.Progress.h: #if ...

  7. XML 和 JSON 的使用场景

    我们都知道 JSON 和 XML 设计的初衷里都包含一点是对人类友好, 所以两者在这方面属于竞争关系. 而在 UI 描述上, 我觉得 XML 是比 JSON 要优异很多. 我们先来看一组简单的数据排版 ...

  8. VMware创建虚拟机教程详解及问题解决

    关于VMware Workstation Pro虚拟机创建教程,本教程主要详细描述使用软件VMware Workstation Pro建虚拟系统过程中步骤详解,以及个人安装时所出现部分问题的解决方案. ...

  9. 深刻理解 React (一) ——JSX和虚拟DOM

    版权声明:本文由左明原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/155 来源:腾云阁 https://www.qclou ...

  10. struts2的s:iterator 标签 详解<转>

    struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo: s:iterator 标签有3个属性:     value:被迭代的集合     id   : ...