小编s0n*_*ica的帖子

MVC 5如何使用本地化路由定义Owin LoginPath

我有一个MVC 5网站,其本地化路由定义为

routes.MapRoute(
            name: "Default",
            url: "{culture}/{controller}/{action}/{id}",
            defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

默认文化导致的位置"en-US".


启动时出现问题我必须使用LoginPath属性定义登录URL,该属性设置一次并且它将始终使用提供的值,例如默认文化,如果"/ en-Us/Account/Login"是指定值.然后我尝试使用UrlHelper类,希望体验一些魔力,但结果显然是一样的:

var httpContext = HttpContext.Current;
        if (httpContext == null) {
          var request = new HttpRequest("/", "http://example.com", "");
          var response = new HttpResponse(new StringWriter());
          httpContext = new HttpContext(request, response);
        }

        var httpContextBase = new HttpContextWrapper(httpContext);
        var routeData = new RouteData();
        var requestContext = new RequestContext(httpContextBase, routeData);
        UrlHelper helper = new UrlHelper(requestContext);

        var loginPath …
Run Code Online (Sandbox Code Playgroud)

c# owin asp.net-mvc-5

47
推荐指数
3
解决办法
2万
查看次数

使用Facebook OAuth保护Rest API端点的可能方法

我一直在阅读很多关于这个主题的内容,但我发现的都是过时的或部分的答案,这对我来说并没有那么多帮助,实际上让我更加困惑.我正在编写一个Rest API(Node + Express + MongoDB),它可以通过Web应用程序(托管在与API相同的域上)和Android应用程序访问.

我希望API只能由我的应用程序访问,并且只能由授权用户访问.我还希望用户能够仅使用他们的Facebook帐户进行注册和登录,并且我需要能够访问一些基本信息,如姓名,个人资料照片和电子邮件.

我想到的一个可能的情况是:

  1. 用户使用Facebook登录Web应用程序,该应用程序被授予访问用户Facebook信息和接收访问令牌的权限.
  2. Web应用程序要求API确认此用户实际在我们的系统上注册,发送电子邮件和Facebook收到的令牌.
  3. API验证用户是否存在,它将用户名,令牌和时间戳存储到DB(或Redis)中,然后返回到客户端应用程序.
  4. 每次客户端应用程序访问其中一个API端点时,除了其他信息之外,它必须提供用户名和令牌.
  5. 每次API都会验证提供的对用户名/令牌是否与存储在数据库中的最新对用户名/令牌匹配(使用订购时间戳),并且自我们存储这些信息后不超过1小时(再次使用时间戳).如果是这种情况,API将处理请求,否则将发出401 Unauthorized响应.

这有意义吗?这种方法是否有任何我遗漏的宏观安全漏洞?我使用MongoDB来存储这些信息的一个问题是,使用旧令牌,集合很快就会变得臃肿.从这个意义上来说,我认为最好使用Redis的过期策略为1小时,以便Redis自动删除旧信息.

api rest facebook oauth

22
推荐指数
1
解决办法
5677
查看次数

标签 统计

api ×1

asp.net-mvc-5 ×1

c# ×1

facebook ×1

oauth ×1

owin ×1

rest ×1