Если вы храните логины и пароли так, как вы это делаете, то один пользователь может использовать пароль другого пользователя и наоборот. Лучше хранить пару логин-пароль вместе:
Файл 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!
Решение состоит в том, чтобы указать мои собственные значения маршрута (третий параметр ниже)
<%= Html.ActionLink("LinkText", "Action", "Controller",
new { id=string.Empty }, null) %>
Проблема заключается в том, что встроенные методы получают ввод с URL-адреса, на котором вы в данный момент находитесь, а также с того, что вы предоставляете. Вы можете попробовать это:
<%= Html.ActionLink("LinkText", "Action", "Controller", new { id = ""}) %>
Это должно вручную стереть параметр id.
Не знаю почему, но у меня это не сработало (возможно из-за 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;
}
Похоже, вам нужно зарегистрировать второй маршрут «Только действие» и использовать Html.RouteLink(). Сначала зарегистрируйте такой маршрут в своем приложении start up:
routes.MapRoute("ActionOnly", "{controller}/{action}",
new { controller = "Home", action = "Index" } );
Затем вместо ActionLink для создания этих ссылок используйте:
Html.RouteLink("About","ActionOnly")
Еще один способ — использовать перегрузку ActionLink(HtmlHelper, String, String, RouteValueDictionary), тогда нет необходимости указывать null в последнем параметре
<%= Html.ActionLink("Details", "Details", "Product", new RouteValueDictionary(new { id=item.ID })) %>