spring 教程

spring security配置项目 -888棋牌游戏

spring framework在spring 3.1中添加了java配置支持。在spring security中,java配置已添加到spring security 3.2中,使我们可以配置spring security 而无需编写xml单行。

在这里,我们将创建一个实现spring的示例。安全性且未使用xml进行配置。它包括以下步骤。

步骤1

第一步是创建spring security java配置。下面给出了一个简单的基本java配置。

websecurityconfig.java

package com.nhooo;
import org.springframework.context.annotation.*;
//import org.springframework.security.config.annotation.authentication.builders.*;
import org.springframework.security.config.annotation.web.builders.httpsecurity;
import org.springframework.security.config.annotation.web.configuration.*;
import org.springframework.security.core.userdetails.user;
import org.springframework.security.core.userdetails.userdetailsservice;
import org.springframework.security.provisioning.inmemoryuserdetailsmanager;
import org.springframework.web.servlet.config.annotation.webmvcconfigurer;
@enablewebsecurity
@componentscan("com.nhooo")
public class websecurityconfig implements webmvcconfigurer {
    
    @bean
    public userdetailsservice userdetailsservice() throws exception {
        inmemoryuserdetailsmanager manager = new inmemoryuserdetailsmanager();
        manager.createuser(user.withdefaultpasswordencoder().username("nhooo").
        password("java123").roles("user").build());
        return manager;
    }
    
    protected void configure(httpsecurity http) throws exception {
                
        http
        .antmatcher("/")                               
        .authorizerequests()
            .anyrequest().hasrole("admin")
            .and()
        .httpbasic();
    }
}

此配置创建一个称为 springsecurityfilterchain 的servlet过滤器。 负责保护应用程序url,验证提交的用户名和密码,重定向到登录表单等。

上述java配置为我们的应用程序执行以下操作。

要求对每个url进行身份验证 创建登录表单 允许用户使用基于表单的身份验证进行身份验证 允许注销 防止csrf攻击 安全标题集成等

步骤2

现在,我们将向战争注册 springsecurityfilterchain 。要进行注册,spring security提供了我们需要扩展的基类abstractsecuritywebapplicationinitializer。

对于spring mvc应用程序,securitywebapplicationinitializer如下所示。

securitywebapplicationinitializer.java

package com.nhooo;
import org.springframework.security.web.context.*;
public class securitywebapplicationinitializer
    extends abstractsecuritywebapplicationinitializer {
}

此代码将为我们应用程序中的每个url注册springsecurityfilterchain。

步骤3

现在,将websecurityconfig加载到我们现有的applicationinitializer中并添加到getrootconfigclasses()方法。

mvcwebapplicationinitializer.java

package com.nhooo;
import org.springframework.web.servlet.support.abstractannotationconfigdispatcherservletinitializer;
public class mvcwebapplicationinitializer extends
        abstractannotationconfigdispatcherservletinitializer {
    @override
    protected class[] getrootconfigclasses() {
        return new class[] { websecurityconfig.class };
    }
    @override
    protected class[] getservletconfigclasses() {
        // todo auto-generated method stub
        return null;
    }
    @override
    protected string[] getservletmappings() {
        return new string[] { "/" };
    }
}

步骤4

websecurityconfigureradapter 类提供了一个configure(httpsecurity http)方法,该方法包含以下默认配置。默认定义如下所示。

protected void configure(httpsecurity http) throws exception {
http
.authorizerequests()
.anyrequest().authenticated()
.and()
.formlogin()
.and()
.httpbasic();
}

它类似于给定的xml。





此方法执行以下操作。

它确保用户提出的每个请求都要求对用户进行身份验证 它允许用户使用基于表单的登录进行身份验证 它允许用户使用http basic身份验证进行身份验证

第5步

创建一个控制器来处理用户请求。

homecontroller.java

package com.nhooo.controller;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
@controller
public class homecontroller {
    
    @requestmapping(value="/", method=requestmethod.get)
    public string index() {
        
        return "index";
    }
}

我们有一个视图(.jsp)页面 index.jsp ,其中包含以下源代码。


home page
welcome to home page!

我们的完整项目如下所示。

spring security java示例

输出:

我们在控制器中只有一个动作,只有真正的用户才能访问它。因此,当我们运行该应用程序时,它会提示您输入登录凭据。输出在下面给出。

spring security java示例1

这是 spring security提供的默认登录页面页面,我们没有创建它。尽管我们可以创建自己的登录页面并使用应用程序进行配置。我们将在下一个主题中进行此操作。

现在,提供登录凭据以进入应用程序资源。 spring security验证用户凭证并确保用户真实性。

让我们看看会发生什么?如果我们输入了错误的凭据。

spring security java示例2

单击登录按钮后,则会引发 bad credentials (错误凭据)错误。

spring security java示例3

现在,使用 正确的凭据登录。/strong>

spring security java示例4

这次凭据被匹配并显示了888棋牌游戏主页(index.jsp)。

spring security java示例5

888棋牌游戏的友情链接:

网站地图