一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

spring secruity XML方式配置用户登录学习笔记

时间:2013-12-16 编辑:简简单单 来源:一聚教程网

很久以前用过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}
       

   

   

request.contextPath}/j_spring_security_check"    method='POST'>

       


           
               
               
           
           
               
               
           
           
               
           
           
       
用户:
               
密码:
               

                                    value="submit" />
                   
               

   



 

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

配置 spring security 的 配置文件

 程序代码

 代码如下 复制代码


       
                    authentication-failure-url="/app/loginfailed" />
       
   

   
       
           
               
           

       

   

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=u9519u8BEFu7684u7528u6237u540Du6216u5BC6u7801


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

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包,自己添加:

源码下载地址:http://file.111com.net/download/2013/12/a36.zip

热门栏目