asp.net mvc HTML. ActionLink () сохраняющий маршрут оценивают, я не хочу

Если вы храните логины и пароли так, как вы это делаете, то один пользователь может использовать пароль другого пользователя и наоборот. Лучше хранить пару логин-пароль вместе:

Файл credentials.json:

{"Fof": "tog"}

Код:

import json

with open('credentials.json') as f:
    credentials = json.load(f)

username = input('Please enter your username: ')
if credentials.get(username):
        print('Welcome {}'.format(username))
        password = input('Please enter your password: ')
        if credentials[username] == password:
                print('success!')
else:
        print('Username incorrect!')

Давайте попробуем взломать:

[ 112]

Успешный вход:

Please enter your username: Fof
Welcome Fof
Please enter your password: tog
success!
44
задан codette 23 April 2009 в 07:21
поделиться

5 ответов

Решение состоит в том, чтобы указать мои собственные значения маршрута (третий параметр ниже)

<%= Html.ActionLink("LinkText", "Action", "Controller", 
    new { id=string.Empty }, null) %>
45
ответ дан 26 November 2019 в 22:04
поделиться

Проблема заключается в том, что встроенные методы получают ввод с URL-адреса, на котором вы в данный момент находитесь, а также с того, что вы предоставляете. Вы можете попробовать это:

<%= Html.ActionLink("LinkText", "Action", "Controller", new { id = ""}) %>

Это должно вручную стереть параметр id.

10
ответ дан 26 November 2019 в 22:04
поделиться

Не знаю почему, но у меня это не сработало (возможно из-за Mvc2 RC). Созданный метод urlhelper =>

 public static string
            WithoutRouteValues(this UrlHelper helper, ActionResult action,params string[] routeValues)
        {
            var rv = helper.RequestContext.RouteData.Values;
            var ignoredValues = rv.Where(x=>routeValues.Any(z => z == x.Key)).ToList();
            foreach (var ignoredValue in ignoredValues)
                rv.Remove(ignoredValue.Key);
            var res = helper.Action(action);
            foreach (var ignoredValue in ignoredValues)
                rv.Add(ignoredValue.Key, ignoredValue.Value);
            return res;
        }
4
ответ дан 26 November 2019 в 22:04
поделиться

Похоже, вам нужно зарегистрировать второй маршрут «Только действие» и использовать Html.RouteLink(). Сначала зарегистрируйте такой маршрут в своем приложении start up:

routes.MapRoute("ActionOnly", "{controller}/{action}", 
   new { controller = "Home", action = "Index" } );

Затем вместо ActionLink для создания этих ссылок используйте:

Html.RouteLink("About","ActionOnly")
13
ответ дан 26 November 2019 в 22:04
поделиться

Еще один способ — использовать перегрузку ActionLink(HtmlHelper, String, String, RouteValueDictionary), тогда нет необходимости указывать null в последнем параметре

<%= Html.ActionLink("Details", "Details", "Product", new RouteValueDictionary(new { id=item.ID })) %>
2
ответ дан 26 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: