SSM框架整合Spring Security(一)

    研究了好长的一段时间,终于可以开始更新了,只是个学习的过程,后期将持续更新Spring Security敬请期待。

首先做一些准备工作:

必备知识:spring   springMVC    mybatis  mysql  gradle 。。。。。

了解 :Security ;

如果您对ssm环境不了解,可以参考我的上一篇博文,gradle-分模块开发搭建SSM框架

下面开始配置security环境,

//gradle配置外部属性
ext {
    spring_version = "4.1.6.RELEASE"
    spring_security_version ="3.2.9.RELEASE"
}
// spring security
compile "org.springframework.security:spring-security-web:$spring_security_version"
compile "org.springframework.security:spring-security-config:$spring_security_version"

到此,Spring Security环境添加完成。

使用java 配置Security:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true) //开启方法权限
public class SecurityConfig  extends WebSecurityConfigurerAdapter {

    static {
        System.out.println(123);
    }
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { //方法1
        auth
            .inMemoryAuthentication()
            .withUser("user").password("user").roles("USER")
            .and()
            .withUser("admin").password("admin").roles("USER", "ADMIN");
    }

    //配置Spring Security的Filter链
    @Override
    public void configure(WebSecurity web) throws Exception {   //方法2
                web
                .ignoring()
                .antMatchers("/resources/**");
    }

    protected void configure(HttpSecurity http) throws Exception {  //方法3
        http
            .authorizeRequests()
            .antMatchers("/signup","/about").permitAll()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login.jsp")
            .loginProcessingUrl("/j_spring_security_check")
            .permitAll()
            .and().logout().permitAll()
            .and().csrf().disable();
    }

我们来了解下配置文件:

首先我们的配置类继承了 WebSecurityConfigurerAdapter,然后通过方法重载 实现了几个方法

方法1:实现的是在内存中验证登录;

方法2:实现的是静态资源的过滤;

方法3:实现了好多的东西;

方法3 帮我们实现了自定义登录,和登录拦截等操作;

j_spring_security_check: 是我们要提交的action;

登录页面是 login.jsp;

security配置基本完事了。

好,我们在web 项目的webapps目录下新建login.jsp;

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/7/18
  Time: 19:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>Login Page</title>
    <style>
        .error {
            padding: 15px;
            margin-bottom: 20px;
            border: 1px solid transparent;
            border-radius: 4px;
            color: #a94442;
            background-color: #f2dede;
            border-color: #ebccd1;
        }

        .msg {
            padding: 15px;
            margin-bottom: 20px;
            border: 1px solid transparent;
            border-radius: 4px;
            color: #31708f;
            background-color: #d9edf7;
            border-color: #bce8f1;
        }

        #login-box {
            width: 300px;
            padding: 20px;
            margin: 100px auto;
            background: #fff;
            -webkit-border-radius: 2px;
            -moz-border-radius: 2px;
            border: 1px solid #000;
        }
    </style>
</head>
<body onload='document.loginForm.username.focus();'>

<h1>Spring Security Custom Login Form (XML)</h1>

<div id="login-box">

    <h2>Login with Username and Password</h2>

    <c:if test="${not empty error}">
        <div class="error">${error}</div>
    </c:if>
    <c:if test="${not empty msg}">
        <div class="msg">${msg}</div>
    </c:if>

    <form name='loginForm' action="/j_spring_security_check" method='POST'>
        <table>
            <tr>
                <td>User:</td>
                <td><input type='text' name='username' value='admin'></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='password' name='password' value='admin'/></td>
            </tr>
            <tr>
                <td colspan='2'><input name="submit" type="submit" value="submit" /></td>
            </tr>
        </table>
        <input type="hidden" name="${_csrf.parameterName}"  value="${_csrf.token}" />
    </form>
</div>

</body>
</html>

到此,如果项目能够正常编译的话,说明我们搭建完成了。以上代码仅供参考 bye。

效果如下:

登录成功后:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值