首页 数据库 mysql教程 MongoDB:mongodb在项目开发时的安全验证、分页查询操作

MongoDB:mongodb在项目开发时的安全验证、分页查询操作

Jun 07, 2016 pm 03:28 PM
mongodb 分页 安全 项目开发 验证

MongoDB:mongodb在项目开发时的安全验证、分页查询操作。 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵~~ 现在贴出来我在项目中是怎么做的。 数据源bean: package com.ishowchina.user.dao;import com.mongodb.BasicDBObject;impo

MongoDB:mongodb在项目开发时的安全验证、分页查询操作。

对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵~~

现在贴出来我在项目中是怎么做的。

数据源bean:

package com.ishowchina.user.dao;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;

public class DataSource {
	private String ip;//数据库连接信息要从配置文件中获取  参考appconfig.properties文件
	private Integer port;
	protected String dbName;
	protected Boolean auth;
	protected String userName;
	protected String passWord;
	//打开连接 此处在获取数据库信息(ip、账户、密码等)后,打开数据库。
	public MongoClient OpenConnection() throws Exception{
		MongoClient mongoClient = new MongoClient( ip,port);
		return mongoClient;
	}
	//获取数据集  此处为数据库安全验证
	public DBCollection getCollection(MongoClient client,String tableName){
		if(client==null){
			return null;
		}else {
			DB db = client.getDB(getDbName());//获取数据库
			boolean r=true;//验证用户及密码
			if(auth!=null && auth.equals(true)){
				r = db.authenticate(userName, passWord.toCharArray());//密码验证
			}
			if(r){
				DBCollection coll = db.getCollection(tableName);//获取数据集
				return coll;
			}else {
				return null;
			}
		}
	}
	//释放连接
	public void ReleaseConnection(MongoClient mongoClient){
		if(mongoClient!=null){
			mongoClient.close();
		}
	}
	//删除操作,注意要传入参数
	public void deleteObject(DBObject o,DBCollection col){
		col.remove(o);
	}
	//分页查询   分页查询mongodb已经为我们集成了,只需调用api就行
	public DBCursor queryPage(DBObject query,DBObject sort,int start,int limit,DBCollection col){
		//.sort('account',1).limit(10),int count = cursor.count()
		BasicDBObject exp=new BasicDBObject("_id",0);
		return col.find(query,exp).sort(sort).skip(start).limit(limit);
	}
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public Integer getPort() {
		return port;
	}
	public void setPort(Integer port) {
		this.port = port;
	}
	public String getDbName() {
		return dbName;
	}
	public Boolean getAuth() {
		return auth;
	}
	public void setAuth(Boolean auth) {
		this.auth = auth;
	}
	public void setDbName(String dbName) {
		this.dbName = dbName;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassWord() {
		return passWord;
	}
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}
}
登录后复制

appconfig.properties配置文件的内容,配置数据库源信息

mongo.ip=160.0.0.243
mongo.port=27017
mongo.auth=true
mongo.user=ucenter
mongo.pwd=user2show
mongo.dbName=ucenter
登录后复制
此外,肯定还要把配置文件appconfig.properties导入到spring bean factory,也就是需要让datasource.java 知道去appconfig.properties 中找数据库配置信息

spring-servlet.xml

    <!-- 导入配置文件 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list>  
                <value>classpath:appconfig.properties</value>
            </list>  
        </property>  
    </bean>
登录后复制

这样做还不够,虽然知道了去那找数据库配置信息,但是,怎么获取数据库配置信息呢,还是在spring-servlet.xml里。
    <!-- 数据源 -->
    <bean id="dataSource" class="com.ishowchina.user.dao.DataSource"><!-- 此处是和我们的数据库bean是对应关系 -->
    	<property name="ip" value="${mongo.ip}"/> <!-- 此处是去appconfig.properties里找关键字对应的数据库信息 -->
    	<property name="port" value="${mongo.port}"/> 
    	<property name="dbName" value="${mongo.dbName}"/> 
    	<property name="auth" value="${mongo.auth}"/>
    	<property name="userName" value="${mongo.user}"/> 
    	<property name="passWord" value="${mongo.pwd}"/> 
    </bean>
登录后复制
以上就是完全的相关配置,接下来我们就可以调用getCollection、OpenConnection等方法了
举个例子:
public DBObject getUserInfo(DBObject o) throws Exception{
		
		MongoClient mongoClient = dataSource.OpenConnection();
		DBCollection coll = dataSource.getCollection(mongoClient,tableName);//获取数据集userinfo
		//mongoClient.setWriteConcern(WriteConcern.JOURNALED);//Setting Write Concern
		BasicDBObject exp=new BasicDBObject("_id",0);//排除ID字段
		DBObject myDoc = coll.findOne(o,exp);
		
		dataSource.ReleaseConnection(mongoClient) ;//释放连接
		return myDoc;
	}
登录后复制
以上,大致流程就这样。。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP数组分页的最佳实现方式 PHP数组分页的最佳实现方式 May 04, 2024 pm 02:39 PM

PHP数组分页有两种最常见的方式:使用array_slice()函数:计算要跳过的元素数量,然后提取指定范围的元素。使用内置迭代器:实现Iterator接口,rewind()、key()、current()、next()和valid()方法用于遍历指定范围内的元素。

java框架安全架构设计应如何与业务需求相平衡? java框架安全架构设计应如何与业务需求相平衡? Jun 04, 2024 pm 02:53 PM

通过平衡安全需求和业务需求,Java框架设计可实现安全:识别关键业务需求,优先考虑相关安全要求。制定弹性安全策略,分层应对威胁,定期调整。考虑架构灵活性,支持业务演变,抽象安全功能。优先考虑效率和可用性,优化安全措施,提高可见性。

Struts 2框架的安全配置和加固 Struts 2框架的安全配置和加固 May 31, 2024 pm 10:53 PM

为保护Struts2应用程序,可以使用以下安全配置:禁用未使用的功能启用内容类型检查验证输入启用安全令牌防止CSRF攻击使用RBAC限制基于角色的访问

使用C++实现机器学习算法:安全性考虑和最佳实践 使用C++实现机器学习算法:安全性考虑和最佳实践 Jun 01, 2024 am 09:26 AM

在使用C++实现机器学习算法时,安全考虑至关重要,包括数据隐私、模型篡改和输入验证。最佳实践包括采用安全库、最小化权限、使用沙盒和持续监控。实战案例中展示了使用Botan库对CNN模型进行加密和解密,以确保安全训练和预测。

PHP微框架:Slim 和 Phalcon 的安全性探讨 PHP微框架:Slim 和 Phalcon 的安全性探讨 Jun 04, 2024 am 09:28 AM

Slim和Phalcon在PHP微框架的安全性对比中,Phalcon内置有CSRF和XSS防护、表单验证等安全特性,而Slim缺乏开箱即用的安全特性,需手动实施安全措施。对于安全至关重要的应用程序,Phalcon提供了更全面的保护,是更好的选择。

如何实施 PHP 安全最佳实践 如何实施 PHP 安全最佳实践 May 05, 2024 am 10:51 AM

如何实施PHP安全最佳实践PHP是最受欢迎的后端Web编程语言之一,用于创建动态和交互式网站。然而,PHP代码可能容易受到各种安全漏洞的攻击。实施安全最佳实践对于保护您的Web应用程序免受这些威胁至关重要。输入验证输入验证是验证用户输入并防止恶意输入(如SQL注入)的关键第一步。PHP提供了多种输入验证函数,例如filter_var()和preg_match()。示例:$username=filter_var($_POST['username'],FILTER_SANIT

如何增强Spring Boot框架的安全性 如何增强Spring Boot框架的安全性 Jun 01, 2024 am 09:29 AM

如何增强SpringBoot框架的安全性增强SpringBoot应用的安全至关重要,以保护用户数据和防止攻击。以下是增强SpringBoot安全性的几个关键步骤:1.启用HTTPS使用HTTPS在服务器和客户端之间建立安全的连接,防止信息被窃听或篡改。在SpringBoot中,可以通过在application.properties中配置以下内容来启用HTTPS:server.ssl.key-store=path/to/keystore.jksserver.ssl.k

SHIB币放在哪个钱包更安全?(新手必看) SHIB币放在哪个钱包更安全?(新手必看) Jun 05, 2024 pm 01:30 PM

SHIB币对于投资者来说已经不陌生了,它是狗狗币同类型概念代币,随着市场的发展,目前SHIB的市值已经排名12了,可以看出SHIB市场的火爆,吸引力无数投资者参与投资。而此前市场的交易、钱包安全事件频出,很多投资者对于SHIB的存放问题一直感到担忧,不知道当下SHIB币放在哪个钱包更安全?根据市场数据分析来看,相对安全的钱包主要就是OKXWeb3Wallet、imToken、MetaMask钱包会比较安全,接下来小编为大家详细说说。SHIB币放在哪个钱包更安全?目前来看,SHIB币放在OKXWe

See all articles