小编Mor*_*son的帖子

使用AuthorizeAttribute进行ASP.NET Web API授权

使用新的ASP.NET Web API测试版.我似乎无法获得建议的用户身份验证方法.建议的方法似乎是,将[Authorize]过滤器添加到API控制器.例如:

[Authorize] 
public IEnumerable<Item> Get()
{
    return itemsService.GetItems();
}
Run Code Online (Sandbox Code Playgroud)

但这并不像预期的那样有效.请求资源时,您将被重定向到登录表单.哪个不适合RESTful webapi.

我该怎么办呢?它在未来的版本中会有不同的工作吗?或者我应该回到实现我自己的动作过滤器?

rest asp.net-web-api

59
推荐指数
1
解决办法
4万
查看次数

REST API中的信息性与唯一生成的ID

设计RESTful API.我有两种识别资源的方法(人员数据).通过数据库生成的唯一ID或通过社会安全号码(SSN)为每个人输入.SSN应该是唯一的,但可以改变.

使用ID对我来说最方便,因为它保证是唯一的,并且不会改变.因此,资源的URL也始终保持不变:

GET /persons/12

{
  "name": Morgan
  "ssn": "840212-3312"
}
Run Code Online (Sandbox Code Playgroud)

使用SSN的理由是API客户端提供更多信息和理解.SSN在周围系统中的使用更多:

GET /persons/840212-3321

{
  "name": Morgan
  "id": "12"
}
Run Code Online (Sandbox Code Playgroud)

所以问题是:我应该采用第一种方法,并避免一些SSN可能发生变化的实施难题.也许提供一些从SSN转换为ID的辅助方法?

或者采用第二种方法.提供更丰富的API.虽然不得不处理一些不那么REST的陌生感,其中URL:s可能因SSN更改而改变?

rest

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

渲染到纹理的一部分

由于OpenGL中使用几何着色器的分层渲染在某些驱动程序/硬件上看起来有些狡猾,我想用自己的解决方案替换该功能.这通过使用大纹理作为rendertarget,例如分辨率为300².然后通过渲染到纹理中的100²块来模拟分层渲染.使用该分辨率,将产生9个图块/图层,如下面的模型所示:

瓷砖

问题是; 如何使用OpenGL?假设借助于几何着色器,可以在一次通过中将场景渲染到不同的切片.

opengl 3d

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

Perl Dancer尾随斜线

使用Perl Web应用程序框架Dancer,我在URL匹配中使用尾部斜杠存在一些问题.

比方说,我希望匹配以下URL,并带有可选的Id参数:

get '/users/:id?' => sub
{
    #Do something
}
Run Code Online (Sandbox Code Playgroud)

双方/users/morgan/users/比赛.虽然/users不会.哪个看起来不太均匀.因为我更喜欢,只匹配URL:s而没有斜杠: /users/morgan/users.我怎么做到这一点?

perl dancer

5
推荐指数
2
解决办法
611
查看次数

OpenGL对象包装器中的自动绑定

我倾向于将OpenGL对象包装在自己的类中.在OpenGL中有绑定的概念,你绑定你的对象,用它做一些事情,然后取消绑定它.例如,纹理:

 glBindTexture(GL_TEXTURE_2D, TextureColorbufferName);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1000);
 glBindTexture(GL_TEXTURE_2D, 0);
Run Code Online (Sandbox Code Playgroud)

包装这将是这样的:

texture->bind();
    texture->setParameter(...);
    texture->setParameter(...);
texture->unBind();
Run Code Online (Sandbox Code Playgroud)

这里的问题是,我想避免使用bind()和unBind()函数,而只是能够调用set方法,GLObject将自动绑定.

我可以在每个方法实现中做到这一点:

public void Texture::setParameter(...)
{
    this.bind();
    // do something
    this.unBind();
}
Run Code Online (Sandbox Code Playgroud)

虽然我必须为每一个添加的方法做到这一点!有没有更好的方法,所以它是在每个方法添加之前和之后自动完成的?

c++ opengl

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

基于循环和多个迭代器的范围

我有以下代码,表示3D应用程序中的网格(为清晰起见,省略了一些代码):

class Mesh {
public:
    typedef std::vector<Vertex> Vertices;
    typedef std::vector<int> Elements;

    template<class VerticesIt, class ElementsIt>
    Mesh(const VerticesIt verticesBegin,
         const VerticesIt verticesEnd,
         const ElementsIt elementsBegin,
         const ElementsIt elementsEnd) :
    vertices_(verticesBegin, verticesEnd),
    elements_(elementsBegin, elementsEnd) {
    }        
    virtual ~Mesh();

    typename Vertices::const_iterator verticesBegin() const {
        return vertices_.begin();
    };

    typename Vertices::const_iterator verticesEnd() const {
        return vertices_.end();
    };

    typename Elements::const_iterator elementsBegin() const {
        return elements_.begin();
    };

    typename Elements::const_iterator elementsEnd() const {
        return elements_.end();
    };

private:       
    Vertices vertices_;
    Elements elements_;

};
Run Code Online (Sandbox Code Playgroud)

它工作得非常好,为内部数据提供了清晰的界面.没有为容器公开实现细节.

我对此有一点打嗝.我不能使用基于范围的循环,必须使用迭代器:

for (auto it = …
Run Code Online (Sandbox Code Playgroud)

c++ iterator for-loop c++11 ranged-loops

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

区域特定登录页面

在我的MVC 3 .net应用程序中,我有两个区域,一个叫Admin,另一个叫Student.我使用内置的会员系统进行用户身份验证,并在两个区域之间进行统一.问题是,我想使用区域特定的登录页面,因为这两个区域在设计上有很多不同(学生针对的是移动设备).据我所知,我只能在Web.config中为应用程序指定一个登录页面,如下所示:

<authentication mode="Forms">
   <forms loginUrl="~/Admin/Account/LogOn" timeout="2880" />
</authentication>`
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我如何为同一会员系统实现多个登录页面?

c# asp.net-membership asp.net-mvc-3

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