更新时间:2021年2月10日
今天分配的任务有点多
除此之外,我心血来潮,分析了一下csdn的评论机制
花了几分钟看看能不能弄一个自动回复的机器人
尝试CSDN自动回复
csdn的评论都是post请求https://blog.csdn.net/phoenix/web/v1/comment/submit网址
post请求添加内容和文章id即可
伪造这个很容易的
using System;
using System.IO;
using System.Net;
using System.Text;
namespace PostTest
{
class Program
{
private string HttpPost(string Url, string postDataStr)
{
CookieContainer cookie = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
request.CookieContainer = cookie;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("UTF-8"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
static void Main(string[] args)
{
Program program = new Program();
string Data = program.HttpPost("https://blog.csdn.net/phoenix/web/v1/comment/submit", "commentId=&content=9876&articleId=113729650");
Console.WriteLine(Data);
Console.ReadKey();
}
}
}
创建一个控制台给出来了
我们得到的结果:
很明显,缺少了cookies,默认认为你是没有登入的
我们再看一下cookies
应该是这条,UserToken,这个肯定是经过加密的
UserToken:“4be97407744a4d3d902965b8ebebbc82”
每次登入,系统会分配我一个独一无二的加密数据,进行其他操作,系统将会检测我的token,和他们进行对比
那我们伪造这个cookie
运行一下:
果然没那么简单
关于登入问题,其实也可以模拟一下,但是就比较复杂了
目前不折腾这么多,等有空,我把学校的校园网给弄个自动登入
正式进入毕业设计!
教师打分的地方出现了一个明显问题
返回给教师打分的,不是改名教师的课程,而是所有课程!
我们得在后端改改:
修改教师批改已完成作业列表:
修改之后:只返回该名教师的学生作业
还是出问题了:
有8条数据,但是我们只需要2条,虽然剩下的6条是null,但是我null都不要!
这个问题是因为,作业已经发布,但是还有学生没有做完,我们修改一下:
效果:
ok,完成了
教师批改作业的话,肯定要查看学生的作业啦!
数据我们是已经传过去了,现在就是修改前端!
最终效果:
ok!
现在开始填坑,完善作业模块!
完善作业模块:
先说明一下:
很多人可能已经发现了,那些分页这么没有弄
这个我们已经在三层架构中封装好了的
分页是一个比较复杂的过程
我们现在完善作业模块就弄分页!
任务:
作业管理:
教师的作业管理,就是那个批改作业,我们已经弄了!
学生的作业管理,是列出自己当前要完成的作业,我们给它弄分页!
现在我们来弄:
一样的,路由,页面,数据改改改
点击完成作业后,自动跳转到作业模块,我们就不用管了
现在我们主要是要弄分页查询
目前的后端还不支持:
我们改一下后端:
BaseDal分页代码:
public IQueryable<T> GetPageEntities<S>(int pageSize, int pageIndex, out int total, Expression<Func<T, bool>> whereLambda, Expression<Func<T, S>> orderByLambda, bool isAsc)
{
total = Db.Set<T>().Where(whereLambda).Count();
if (isAsc)
{
var pageData = Db.Set<T>().Where(whereLambda)
.OrderBy<T, S>(orderByLambda)
.Skip(pageSize * (pageIndex - 1))
.Take(pageSize).AsQueryable();
return pageData;
}
else
{
var pageData = Db.Set<T>().Where(whereLambda)
.OrderByDescending<T, S>(orderByLambda)
.Skip(pageSize * (pageIndex - 1))
.Take(pageSize).AsQueryable();
return pageData;
}
}
size:一页多少条数据
page:目前是第几页
total:返回一共多少条数据
lambda1:where条件
lambda2:根据谁来排序(泛型就加一个int)
by:顺序还是反序
前端:
修改分页:
添加数据和方法:
api,我们要采用post请求:
api:
后端:
ok
传值没有问题!
这里我们注意一下,前端需要得到总值
我们还得把数据处理一下
这里得加一个数据,我们得在json格式工厂添加一个重载函数
还有升序和降序的操作
我们改变by,然后传值过去即可
还有一个操作,根据内容进行搜索
由于下面的字段太少了,这里不太好用这个进行搜索,所以这里先暂时放着
现在前端得到的数据有完成的和未完成的
我们也要显示出来
嗯
差不多先这样
然后关于这些id变成模型
还有-1分数什么什么的
再用过滤器弄一下
ok,看看效果:
行,留几个小坑,之后慢慢给它用过滤器美化!
最后优化一下布局:
小细节:
导航栏列表绑定事件:
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>查看账户</el-dropdown-item>
<el-dropdown-item>修改密码</el-dropdown-item>
<el-dropdown-item @click.native="logout()"
>安全退出</el-dropdown-item
>
</el-dropdown-menu>
取消导航栏的选中按钮:
重置一下样式即可!
怎么样?是不是有那味了?
我也分析过ui,和正儿八经的网站还是有差距的的,主要是体现在数据统计动画上面
我们之后将运用更多的echars动画和elelment仪表盘动画!
让整个系统更加高大尚!