判断文章/帖子操作权限

在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变量  判断 决定是否给与当前登陆人编辑/删除文章/帖子的权限

原文地址:https://www.cnblogs.com/avivaye/p/3007254.html