shiro 基于springmvc中做登陆功能
1.添加依赖
1 <!-- shiro --> 2 <dependency> 3 <groupId>org.apache.shiro</groupId> 4 <artifactId>shiro-core</artifactId> 5 <version>1.4.0</version> 6 </dependency> 7 <dependency> 8 <groupId>org.apache.shiro</groupId> 9 <artifactId>shiro-spring</artifactId> 10 <version>1.4.0</version> 11 </dependency>
View Code
2.ApplicationContext-mvc.xml配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xmlns:task="http://www.springframework.org/schema/task" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd 11 http://www.springframework.org/schema/context 12 http://www.springframework.org/schema/context/spring-context-4.3.xsd 13 http://www.springframework.org/schema/task 14 http://www.springframework.org/schema/task/spring-task.xsd 15 "> 16 17 <mvc:annotation-driven/> 18 <mvc:default-servlet-handler/> 19 20 <context:component-scan base-package="com.wfd360.controller"/> 21 22 <!-- 未认证或未授权时跳转必须在springmvc里面配,spring-shiro里的shirofilter配不生效 --> 23 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 24 <property name="exceptionMappings"> 25 <props> 26 <!--表示捕获的异常 --> 27 <prop key="org.apache.shiro.authz.UnauthorizedException"> 28 <!--捕获该异常时跳转的路径 --> 29 /403 30 </prop> 31 <!--表示捕获的异常 --> 32 <prop key="org.apache.shiro.authz.UnauthenticatedException"> 33 <!--捕获该异常时跳转的路径 --> 34 /403 35 </prop> 36 </props> 37 </property> 38 </bean> 39 40 41 42 <!-- 配置SpringMVC的视图解析器 --> 43 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 44 <property name="prefix" value="/WEB-INF/jsp/"/> 45 <property name="suffix" value=".jsp"/> 46 </bean> 47 48 <import resource="classpath:spring-shiro.xml"/> 49 50 </beans>
View Code
3.spring-shiro.xml配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 <!--开启shiro的注解--> 6 <bean id="advisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> 7 <property name="proxyTargetClass" value="true"></property> 8 </bean> 9 <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"/> 10 <!--注入自定义的Realm--> 11 <bean id="customRealm" class="com.wfd360.shiro.CustomRealm"></bean> 12 <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 13 <property name="realm" ref="customRealm"></property> 14 </bean> 15 16 <!--配置ShiroFilter--> 17 <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 18 <property name="securityManager" ref="securityManager"></property> 19 <!--登入页面--> 20 <property name="loginUrl" value="/login.jsp"></property> 21 <!--登入成功页面--> 22 <property name="successUrl" value="/index.jsp"/> 23 <!-- <property name="filters"> 24 <map> 25 <!–退出过滤器–> 26 <entry key="logout" value-ref="logoutFilter" /> 27 </map> 28 </property>--> 29 <!--URL的拦截--> 30 <property name="filterChainDefinitions" > 31 <value> 32 /share = authc 33 /logout = logout 34 </value> 35 </property> 36 37 </bean> 38 <!--自定义退出LogoutFilter--> 39 <!-- <bean id="logoutFilter" class="com.test.filter.SystemLogoutFilter"> 40 <property name="redirectUrl" value="/login"/> 41 </bean>--> 42 </beans>
View Code
4.创建对象 CustomRealm.java
1 package com.wfd360.shiro; 2 3 import org.apache.shiro.authc.AuthenticationException; 4 import org.apache.shiro.authc.AuthenticationInfo; 5 import org.apache.shiro.authc.AuthenticationToken; 6 import org.apache.shiro.authc.SimpleAuthenticationInfo; 7 import org.apache.shiro.authz.AuthorizationInfo; 8 import org.apache.shiro.authz.SimpleAuthorizationInfo; 9 import org.apache.shiro.realm.AuthorizingRealm; 10 import org.apache.shiro.subject.PrincipalCollection; 11 12 import java.util.ArrayList; 13 import java.util.List; 14 15 /** 16 * @author www.wfd360.com 17 * @date 2018/2/26 14:05 18 */ 19 public class CustomRealm extends AuthorizingRealm { 20 /** 21 * 授权 22 * @param principalCollection 23 * @return 24 */ 25 @Override 26 protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { 27 String userName = (String) principalCollection.getPrimaryPrincipal(); 28 List<String> permissionList=new ArrayList<String>(); 29 permissionList.add("user:add"); 30 permissionList.add("user:delete"); 31 if (userName.equals("zhou")) { 32 permissionList.add("user:query"); 33 } 34 SimpleAuthorizationInfo info=new SimpleAuthorizationInfo(); 35 info.addStringPermissions(permissionList); 36 info.addRole("admin"); 37 return info; 38 } 39 /** 40 * 认证 41 * @param authenticationToken 42 * @return 43 * @throws AuthenticationException 44 */ 45 @Override 46 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { 47 String userName = (String) authenticationToken.getPrincipal(); 48 if ("".equals(userName)) { 49 return null; 50 } 51 SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(userName,"123456",this.getName()); 52 return info; 53 } 54 }
View Code
5.控制层ShiroController.java对象
1 package com.wfd360.controller; 2 3 import org.apache.shiro.SecurityUtils; 4 import org.apache.shiro.authc.IncorrectCredentialsException; 5 import org.apache.shiro.authc.UnknownAccountException; 6 import org.apache.shiro.authc.UsernamePasswordToken; 7 import org.apache.shiro.subject.Subject; 8 import org.springframework.stereotype.Controller; 9 import org.springframework.ui.Model; 10 import org.springframework.web.bind.annotation.RequestMapping; 11 import org.springframework.web.bind.annotation.RequestMethod; 12 13 /** 14 * Created by Administrator on 2018/10/29. 15 */ 16 @Controller 17 public class ShiroController { 18 19 @RequestMapping(value = "/loginData", method = RequestMethod.POST) 20 public String login(String userName, String passwd, Model model) { 21 Subject subject = SecurityUtils.getSubject(); 22 UsernamePasswordToken token = new UsernamePasswordToken(userName, passwd); 23 try { 24 subject.login(token); 25 } catch (UnknownAccountException e) { 26 e.printStackTrace(); 27 model.addAttribute("userName", "用户名错误!"); 28 return "login"; 29 } catch (IncorrectCredentialsException e) { 30 e.printStackTrace(); 31 model.addAttribute("passwd", "密码错误"); 32 return "login"; 33 } 34 return "index"; 35 } 36 37 @RequestMapping(value = "/index2") 38 public String index() { 39 System.out.println("------index-------"); 40 return "login"; 41 } 42 }
View Code
6.登陆jsp页面login.jsp
1 <%-- 2 Created by IntelliJ IDEA. 3 User: Administrator 4 Date: 2018/10/29 5 Time: 11:51 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>登陆界面</title> 12 </head> 13 <body> 14 <h2>登陆界面</h2> 15 <form action="/loginData" method="post"> 16 用户名:<input name="userName"> 17 密码:<input name="passwd"> 18 <input type="submit"> 19 </form> 20 </body> 21 </html>
View Code
7.web.xml配置
1 <!-- shiro 过滤器 start --> 2 <filter> 3 <filter-name>shiroFilter</filter-name> 4 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 5 <!-- 设置true由servlet容器控制filter的生命周期 --> 6 <init-param> 7 <param-name>targetFilterLifecycle</param-name> 8 <param-value>true</param-value> 9 </init-param> 10 </filter> 11 <filter-mapping> 12 <filter-name>shiroFilter</filter-name> 13 <url-pattern>/*</url-pattern> 14 </filter-mapping> 15 <!-- shiro 过滤器 end -->
View Code
8.测试完成!
转载于:https://www.cnblogs.com/newAndHui/p/9870383.html
shiro 基于springmvc中做登陆功能相关推荐
- springmvc整合shiro做登陆权限控制,使用mongodb存储session
公司模块分得比较细,一直给自己的模块做后台数据处理,对前端和登陆验证权限等操作遗忘很多,于是研究了一下公司目前的后台登录结构,用了shiro验证登录和授权,使用mongodb作为sessiondao实 ...
- B/S基于springMVC的网上选课系统(功能齐全javaweb)
自己在课设上写的,基于springMVC的网上选课系统. 使用说明: windows系统 java环境和tomcat环境 mysql数据库 用户名root 密码root eclipse需配置jr ...
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...
在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对 ...
- Java中使用MVC三层架构做登陆验证
这里主要的内容是有关Java中MVC三层架构 目录 原始的登陆验证 分层改进(每个代码都是登录和验证两个功能) 使用分层想法做登陆验证 User类 表现层 业务层 持久层 原始的登陆验证 原始的登陆验 ...
- 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(三)-路由与隧道...
https://www.cnblogs.com/opsec/p/7016631.html 在系列的上一篇, 深入浅出新一代云网络--VPC中的那些功能与基于OpenStack Neutron的实现(二 ...
- 游戏陪玩系统源码开发,实现登陆功能需要如何做?
登录功能的实现,是用户使用游戏陪玩系统源码的第一步,如果登录功能都没有开发好,那就无法给用户留下好的第一印象,所以今天我们就一起来看看在游戏陪玩系统源码开发中,实现登陆功能需要如何做吧. Login. ...
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)-简述与端口转发...
VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...
- js php通讯录,基于aotu.js实现微信自动添加通讯录中的联系人功能
什么是Auto.JS? Auto.JS是Android平台上的JavaScript自动化工具. 它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启"无障碍模式" ...
- 基于云开发的答题活动小程序v2.0-用云开发的聚合能力实现从题库中随机出题功能
项目技术栈 微信原生小程序+云开发.为什么选择微信原生小程序进行开发呢?因为能够直接应用它的云开发能力吖. 我这里主要使用了云开发能力中的小程序端SDK,说白了就是在javascript中就能直接操作 ...
最新文章
- 批处理+定时任务实现定时休息提醒
- 实施Kubernetes可以实现多云架构安全
- php array 关联数组,php array_merge关联数组
- 修改中断向量ESC退出
- sql server密钥
- 网页优化中,网站页面结构该注意什么?
- Python自学之乐-Python字典实现简单的三级菜单
- ResourceBundle 读取properties文件中文乱码
- 进位和借位问题的研究
- m_map投影_MATLAB——m_map指南(1)
- java中一个对象占多少字节
- word转简洁html工具,Convert Word to HTML(Word转HTML工具)
- 垃圾盒制作过程大揭密!
- 论文查找ICCV ECCV CVPR
- python整形怎么切片_遥感影像切分切片
- 使用神经网络识别手写数字
- Java下载文件时文件名出现乱码(但文件内容正常)
- 视觉定位领域专栏(二)常用数据集介绍
- opera浏览器修改默认搜索引擎为百度
- ASO优化|标题、描述、关键词的最优策略
热门文章
- 二阶齐次线性微分方程的通解公式_数学考研辅导(数二)063|高数常微分方程6
- Python入门--列表元素的增加操作,append(),extend(),insert(),切片
- 操作系统—进程同步与互斥问题之生产者消费者问题,附赠PV操作题解题思路(思维导图版)
- 由一维数组创建小根堆
- [PyTorch] 基于Python和PyTorch的线性拟合
- hadoop相关问题
- matlab2c使用c++实现matlab函数系列教程-conv函数
- 汇编:在BUFFER中定义了的十个带符号字,将其中的负数变成绝对值,并以十进制方式输出
- 磁盘I/O高居不下,通过什么来查看占用I/O的进程?
- 事务背书 ACID, CAP, BASE