zoukankan      html  css  js  c++  java
  • 判断文章/帖子操作权限

    在BBS项目中 第一次新建一个帖子  称为文章  一篇帖子中   只有一个文章  但是可有多个回帖

    如何判断某文章或者帖子是自己创建的  从而给与权限呢

    下面给出代码:

    	// 判断本文章是否为登陆人创建
    	private Boolean isArticleAuthor() throws Exception {
    		// 查询本文章的创建人
    		sql = "SELECT USER_ID FROM T_ARTICLE WHERE ARTICLE_ID = '" + artUuid+ "'";
    		sta = con.createStatement();
    		res = sta.executeQuery(sql);
    
    		if (res.next()) {
    			art_personUUID = res.getString(1);
    		}
    
    		if ((person.getUuid()).equals(art_personUUID)) {
    			isArticleAuthor = true;
    		} else {
    			isArticleAuthor = false;
    		}
    		System.out.println("isArticleAuthor--->"+isArticleAuthor);
    		return isArticleAuthor;
    	}
    

    不管用户是否设置昵称  任他的昵称如何改变  我们只要得到创建文章时设置的User_ID(好比人的身份证号),就可以唯一的标识这篇文章的创建人 从而控制权限

    帖子的判断权限稍微复杂点,因为回帖的判断是对多个帖子的判断

     ① 首先我们要取出所有回帖的POST_ID,有多少个POST_ID就有多少回帖

    sql = "SELECT POSTS_ID from T_POSTS WHERE ARTICLE_ID='"+artUuid+"'";
    

    ② 其次我们要根据回帖的ID取出这些回帖的创建人,创建人数至少1人,至多POST_ID.size()人.

    sql = "SELECT USER_ID FROM T_POSTS WHERE POSTS_ID = '"+回帖ID集合+"'";
    

    ③  因此我们可以把这两个sql语句合二为一  取得所有帖子的所有创建人

    sql= "SELECT USER_ID FROM T_POSTS WHERE POSTS_ID IN (SELECT POSTS_ID from T_POSTS WHERE ARTICLE_ID='"+artUuid+"')";
    

     这个语句使用介词IN来做了一个复杂查询  其实就是两个SQL语句取交集

    下面给出具体的代码:

    	// 判断帖子是否是登陆人创建
    	private List isPostsAuthorList() throws Exception {
    
    		sql = "SELECT USER_ID FROM T_POSTS WHERE POSTS_ID IN (SELECT POSTS_ID from T_POSTS WHERE ARTICLE_ID='" + artUuid + "')";	
    		sta = con.createStatement();
    		res = sta.executeQuery(sql);
    
    		System.out.println(sql);
    		while(res.next()){
    			
    			pos_personUUID = res.getString(1);
    			
    			if((person.getUuid()).equals(pos_personUUID)){
    				isPostsAuthor = true;
    			}else{
    				isPostsAuthor = false;
    			}	
    			isPostsAuthorList.add(isPostsAuthor);
    		}
    			return isPostsAuthorList;
    	}
    

     这个方法返回的是一个Boolean的List集合,根据帖子的顺序取得帖子创建时插入的USER_ID来和登陆人ID做比较,返回true/false.放入到集合中

    并通过request.setAttribute()方法来共享此属性

    在前台做权限判断时,就遍历这个List 取得单个的Boolean变量  判断 决定是否给与当前登陆人编辑/删除文章/帖子的权限

  • 相关阅读:
    笔试题 1.3 百度 2012 10.09 简答题 + 程设 --A
    windows中搜索dll的顺序
    笔试题 1.2 关于大文件处理:
    笔试题 1.1 最少比赛数目
    小优化
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
  • 原文地址:https://www.cnblogs.com/avivaye/p/3007254.html
Copyright © 2011-2022 走看看