Исследование персистентных сессий самостоятельно, я нашел, что это просто не стоит угрозы безопасности. Используйте его, если Вы абсолютно имеете к, но необходимо считать такую сессию только слабо аутентифицируемой и вызвать новый вход в систему для чего-либо, что могло быть значимо для взломщика.
причина, являющаяся, конечно, состоит в том, что Ваши cookie, содержащие Вашу персистентную сессию, так легко украдены.
4 способа украсть Ваши cookie (от комментарий Jens Roland на странице @splattne
основывал его ответ на):
Создайте новый маршрут в Global.asax, чтобы справиться с этим:
routes.MapRoute(
"productId", // Route name
"productId/{id}/{name}", // URL with parameters
new { controller = "Home", action = "productId", id = 1234, name = widget } // Parameter defaults
);
Asp.Net MVC имеет встроенную маршрутизацию, поэтому нет необходимости в редакторе URL.
MVC означает «Контроллер представления модели», и хотя эти концепции не являются тем, о чем вы спрашиваете, вы обычно можете легко подключить URL-адреса, как вы видите выше
Так, например По умолчанию URL-адрес выглядит следующим образом
http://www.somesite.com/controller/view/
, где контроллер относится к классу контроллера в вашем проекте, а представление относится к комбинации страницы / метода в контроллере. Так, например, вы можете написать представление, которое будет принимать входные данные, и выглядеть примерно так
http://www.somesite.com/widget/productid/1234/
Что касается URL SEO Friendly , это просто бесполезный сахар. Вы создаете свой контроллер таким образом, что он добавляет безобидный мусор в конец URL-адреса.
Так, например, вы заметите, что следующие три способа ответить на этот вопрос дают одинаковый результат:
Как создать SEO-дружественные URL-адреса в ASP. Net-MVC
Как мне создать SEO-дружественные URL-адреса в ASP.Net-MVC
Как мне создать SEO-дружественные URL-адреса в ASP.Net-MVC
. Переполнение стека создало свои значения маршрута таким образом, что бит, который появляется после идентификатора вопроса, на самом деле не обязательно.
Так зачем он там? Чтобы увеличить Google PageRank. Google PageRank полагается на многие вещи, общая сумма которых является секретной, но одна из вещей, которые люди заметили, заключается в том, что, при прочих равных, рейтинг URL описательного текста выше. Вот почему Stack Overflow использует этот текст после номера вопроса.
Так почему это там? Чтобы увеличить Google PageRank. Google PageRank полагается на многие вещи, общая сумма которых является секретной, но одна из вещей, которые люди заметили, заключается в том, что, при прочих равных, рейтинг URL описательного текста выше. Вот почему Stack Overflow использует этот текст после номера вопроса.
Так почему это там? Чтобы увеличить Google PageRank. Google PageRank полагается на многие вещи, общая сумма которых является секретной, но одна из вещей, которые люди заметили, заключается в том, что, при прочих равных, рейтинг URL описательного текста выше. Вот почему Stack Overflow использует этот текст после номера вопроса.
Я думаю, вам нужна маршрутизация MVC взгляните на эти
Также важно обрабатывать устаревшие URL-адреса. У меня есть база данных старых и новых URL-адресов, и я перенаправляю с помощью следующего кода;
public class AspxCatchHandler : IHttpHandler, IRequiresSessionState
{
#region IHttpHandler Members
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
if (context.Request.Url.AbsolutePath.Contains("aspx") && !context.Request.Url.AbsolutePath.ToLower().Contains("default.aspx"))
{
string strurl = context.Request.Url.PathAndQuery.ToString();
string chrAction = "";
string chrDest = "";
try
{
DataTable dtRedirect = SqlFactory.Execute(
ConfigurationManager.ConnectionStrings["emptum"].ConnectionString,
"spGetRedirectAction",
new SqlParameter[] {
new SqlParameter("@chrURL", strurl)
},
true);
chrAction = dtRedirect.Rows[0]["chrAction"].ToString();
chrDest = dtRedirect.Rows[0]["chrDest"].ToString();
chrDest = context.Request.Url.Host.ToString() + "/" + chrDest;
chrDest = "http://" + chrDest;
if (string.IsNullOrEmpty(strurl))
context.Response.Redirect("~/");
}
catch
{
chrDest = "/";// context.Request.Url.Host.ToString();
}
context.Response.Clear();
context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location", chrDest);
context.Response.End();
}
else
{
string originalPath = context.Request.Path;
HttpContext.Current.RewritePath("/", false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
HttpContext.Current.RewritePath(originalPath, false);
}
}
#endregion
}
надеюсь, что это полезно