asp.net razor仅允许登录用户编辑页面
我有这个配置文件编辑页面,但如果用户更改了url中的id,他可以更改其他用户的配置文件,我如何拒绝访问url中的其他idasp.net razor仅允许登录用户编辑页面,asp.net,razor,Asp.net,Razor,我有这个配置文件编辑页面,但如果用户更改了url中的id,他可以更改其他用户的配置文件,我如何拒绝访问url中的其他id if (!IsPost) { //if(!Request.QueryString["ID"].IsEmpty()){ if (!Request.QueryString["UserId"].IsEmpty() && Request.QueryString["UserId"].IsInt()) {
if (!IsPost)
{
//if(!Request.QueryString["ID"].IsEmpty()){
if (!Request.QueryString["UserId"].IsEmpty() && Request.QueryString["UserId"].IsInt())
{
UserId = Request.QueryString["UserId"];
var db = Database.Open("mystring");
var dbCommand = "SELECT * FROM UserProfile WHERE UserId = @0";
var row = db.QuerySingle(dbCommand, UserId);
if (row != null)
{
Email = row.Email;
fullname = row.fullname;
location = row.location;
}
else
{
ModelState.AddFormError("No Profile was selected.");
}
通过不允许将userid作为查询字符串参数传递,而是从加密表单身份验证cookie中读取它 因此: 应成为:
string username = User.Identity.Name;
这将为您提供当前经过身份验证的用户名,然后只更改他的个人资料。有很多方法可以做到这一点
您使用的是哪种身份验证?请尝试Darin Dimitrov提出的解决方案,您不应该在不进行任何检查的情况下从查询字符串中获取用户id
string username = User.Identity.Name;