小编cof*_*kid的帖子

ServiceStack API和ASP MVC身份验证有两种方式

我在解决通过ServiceStack服务html页面和Web服务的ASP MVC应用程序的体系结构时遇到了麻烦.

该应用程序存在于基本URL中,例如" http://myapplication.com ",SS存在于" http://myapplication.com/api "中,因为它是配置两者的最简单方法.

总的来说一切正常,但是当我到达授权和身份验证的一部分时,我就被困住了.

首先,我需要应用程序处理cookie,因为ASP通常会执行FormsAuthentication,并且当使用属性"Authorize"时,用户将通过登录屏幕并使用操作和控制器.这是典型的ASP,所以我没有问题,例如" http://myapplication.com/PurchaseOrders ".

另一方面,我的应用程序的客户端将从javascript使用我的Web服务API.在某些情况下,还会使用ServiceStack的"Authenticate"属性标记这些Web服务.例如," http://myapplication.com/api/purchaseorders/25 "必须验证用户是否可以查看该特定采购订单,否则发送401 Unauthorized,以便javascript可以处理这些情况并显示错误消息.

最后但并非最不重要的是,另一组用户将使用任何外部应用程序(可能是Java或.NET)通过令牌使用我的API.因此,我需要解决两种类型的身份验证,一种使用用户名和密码,另一种使用令牌并使其持久化,因此一旦第一次进行身份验证,下一次调用就可以更快地从API中解决.

这是我到目前为止的代码,我已经非常简单地说明了这个例子.

    [HttpPost]
    public ActionResult Logon(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            JsonServiceClient client = new JsonServiceClient("http://myapplication.com/api/");
            var authRequest = new Auth { provider = CredentialsAuthProvider.Name, UserName = model.UserName, Password = model.Password, RememberMe = model.RememberMe };
            try
            {

                var loginResponse = client.Send(authRequest);

                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(loginResponse.UserName, false, 60);
                var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
                Response.Cookies.Add(cookie);

                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") …
Run Code Online (Sandbox Code Playgroud)

.net c# authentication forms-authentication servicestack

5
推荐指数
1
解决办法
1860
查看次数

Golang Goji:如何同时提供静态内容和api

过去两周我一直在玩Golang,最后可以开始真正的应用程序.它使用NGINX提供的静态HTML文件,API使用Goji Web Framework作为后端.我不使用任何Golang模板,因为一切都是Angular.Js,所以静态可以满足我的需求.

我想选择是否在生产中使用NGINX,或者让Go使用应用程序使用的相同端口在root上提供静态内容(8000).这样开发环境就不需要安装NGINX.

所以,尝试像这样添加一个默认多路复用器的句柄

goji.DefaultMux.Handle("/*", serveStatic)

func serveStatic(w http.ResponseWriter, r *http.Request) {
//http.ServeFile(w, r, r.URL.Path[1:])
//http.FileServer(http.Dir("static"))
http.StripPrefix("/static/", http.FileServer(http.Dir("static")))
Run Code Online (Sandbox Code Playgroud)

}

在所有API路径都已注册之后执行此句柄(否则API将无效).

我已经尝试过任何类型的组合,它可以将我重定向到HTTP 404,或者将HTML内容显示为文本.两者都不好.我想知道是否有人来过这里,可以让我了解我做错了什么.

谢谢.

虽然这与我的问题无关,但这里是我正在使用的NGINX配置:

server {
listen 80;

# enable gzip compression
    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types    text/plain application/x-javascript text/xml text/css;
    gzip_vary on;
# end gzip configuration

location / {
    root /home/mleyzaola/go/src/bitbucket.org/mauleyzaola/goerp/static;
    try_files $uri $uri/ /index.html = 404;
}

location /api {
    proxy_pass http://localhost:8000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass …
Run Code Online (Sandbox Code Playgroud)

go goji

3
推荐指数
1
解决办法
4427
查看次数

Angularjs和Jade ng-repeat嵌套问题

我开始玩Jade,我遇到了这个奇怪的问题.我确定这是愚蠢的,但我已经尝试了一个小时没有成功.

我有一个包含组的对象,每个组包含项目.所以,有一个ng-repeat嵌套在另一个里面.

                ul.page-sidebar-menu(ng-repeat="group in menuItems")
                li(ng-class="group.groupStyle")
                    a(href="{{group.target}}")
                        i(ng-class="group.iconStyle")
                        span.title {{group.name}}
                        span(ng-class="group.spanStyle")
                    ul.sub-menu(ng-repeat="item in group.items")
                        li
                            a(href="{{item.target}}") {{item.name}}
Run Code Online (Sandbox Code Playgroud)

对象源是这样的:

[
{
    name: "Inicio",
    target: "/",
    groupStyle: {
        start: "start",
        active: "active"
    },
    spanStyle: {
        selected: "selected"
    },
    iconStyle: "icon-home"
},
{
    name: "Catalogo",
    target: "javascript:;",
    groupStyle: { },
    spanStyle: {
        arrow: "arrow"
    },
    iconStyle: "icon-book",
    items: [
        { name: "Clientes", target: "view1" },
        { name: "Rutas", target: "view1" },
        { name: "Transportistas", target: "view1" }
    ]
    },
{
    name: …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat pug

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