spring secruity 入门学习(XML方式配置用户登录), 源码下载

摘要: 很久以前用过spring security , 那个时候还是 2.0 版本的, 而且当时是项目组的另外的成员负责权限设计这一块,我只是皮毛了解一些 (只知道可以通过xml配置实现权限控制,实现资源与用户角色之间的关系配置,通过一连串的filter 来实现整个认证和授权过程)。一直没有系统的学习下  spring security ,现在有机会了,不过 spring security 变成了3.0 以上的版本了, 基础的知识以及介绍,官方也有详细的文档。就一步一步按照文档试验吧,做一个简单的基于xml配置的认证.

很久以前用过spring security , 那个时候还是 2.0 版本的, 而且当时是项目组的另外的成员负责权限设计这一块,我只是皮毛了解一些 (只知道可以通过xml配置实现权限控制,实现资源与用户角色之间的关系配置,通过一连串的filter 来实现整个认证和授权过程)。一直没有系统的学习下 spring security ,现在有机会了,不过 spring security 变成了3.0 以上的版本了, 基础的知识以及介绍,官方也有详细的文档。就一步一步按照文档试验吧,做一个简单的基于xml配置的认证.

整个程序还是采用 spring mvc 架构, 结合spring security 实现一个简单的用户登录认证. 项目所需要用到的jar包如下,有可能有多的:


既然要做登录认证,就需要一个登录页面,我采用了jstl.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


Login Page



	

自定义页面登录

登录失败 原因 : ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
用户:
密码:


需要注意的是在html 表单中的如下东西:
j_spring_security_check – 登录请求的url
j_spring_security_logout – 登出的url
j_username – 用户名
j_password – 密码

配置 spring security 的 配置文件

		
		
		
	

	
		
			
				
			
		
	


login-page=”/app/login” – 定义登录页面地址
default-target-url=”/app/welcome” – 如果认证成功,则forward到/app/welcome页面
authentication-failure-url=”/loginfailed” – 如果认证失败,则跳转到 /app/loginfailed 页面
logout-success-url=”/logout” – 退出登录,跳转到 /app/logout 页面.

注意,这里的地址url 全部是采用 spring mvc rest 风格定义的,具体的定义在controller 中实现, 代码如下:
package com.yihaomen.common.controller;
 
import java.security.Principal;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
public class LoginController {
 
	@RequestMapping(value="/welcome", method = RequestMethod.GET)
	public String printWelcome(ModelMap model, Principal principal ) {
 
		String name = principal.getName();
		model.addAttribute("username", name);
		model.addAttribute("message", "Spring Security Custom Form example");
		return "hello"; 
	}
 
	@RequestMapping(value="/login", method = RequestMethod.GET)
	public String login(ModelMap model) { 
		return "login"; 
	}
	
	@RequestMapping(value="/loginfailed", method = RequestMethod.GET)
	public String loginerror(ModelMap model) { 
		model.addAttribute("error", "true");
		return "login"; 
	}
	
	@RequestMapping(value="/logout", method = RequestMethod.GET)
	public String logout(ModelMap model) { 
		return "login"; 
	}
	
}


定义错误消息 mymessages.properties
AbstractUserDetailsAuthenticationProvider.badCredentials=\u9519\u8BEF\u7684\u7528\u6237\u540D\u6216\u5BC6\u7801

如果登录失败,将会在界面上显示这个消息: "错误的用户名或密码 "

spring security 在 web.xml中的配置

	
		mvc-dispatcher
		org.springframework.web.servlet.DispatcherServlet
		1
	
	
		mvc-dispatcher
		/app/*
	

	
		org.springframework.web.context.ContextLoaderListener
	

	
		contextConfigLocation
		
			/WEB-INF/mvc-dispatcher-servlet.xml,
			/WEB-INF/spring-security.xml
		
	

	
	
		springSecurityFilterChain
		org.springframework.web.filter.DelegatingFilterProxy
	

	
		springSecurityFilterChain
		/*
	


整个程序结构如下:

运行程序,如果输入正确的用户名和密码:






如果输入的密码错误,则会出现如下错误提示



由此,一个简单的spring security 的登录认证就实现了,整个源代码下载,除去了jar包,自己添加:


spring security xml configuration download

上一篇: django o&#114;m 批量更新数据
下一篇: spring secruity 入门学习(数据库方式配置用户登录)

Avatar

笔杆战神 评论于: 2016-09-05

哥方便的话把jar包发给我把,2681844118@qq.com

Avatar

xwolf 评论于: 2016-03-05

很好,学习了!

Avatar

稳5 评论于: 2016-01-04

都没有jar包

Avatar

jj 评论于: 2015-08-18

少了一个asm的jar包

Avatar

33 评论于: 2014-03-04

建议楼主用MAVEN。。。
[reply=轻舞肥羊,2014-03-04 07:26 PM]多谢,其实在项目中一直用maven的,个人试验,很少用,我用手机共享电脑上网,maven下载包很慢。也许以后发DEMO工程会用MAVEN工程发布。[/reply]
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号