我正在使用Grails Spring-Security插件开发Grails(版本1.3.3)Web应用程序,Spring-Security-Core-1.0.1(反过来,它使用spring-security-3.0.2.RELEASE).
我想为控制器中的操作提供基于Spring-Security注释的访问控制.
我已经能够使用以下注释成功进行基本身份验证:
@Secured("hasAnyRole('ROLE_USER')")
def list = {
...
}
Run Code Online (Sandbox Code Playgroud)
这样做 - 只向具有ROLE_USER角色的人提供对列表操作/视图的访问.
但是,允许执行某些控制器操作的角色集可能会随时间而变化,并且是系统整体状态的函数.也就是说,允许执行给定操作的角色集可能由服务或域对象方法返回.
我可以做这样的事情的一种方法是使用Spring-Security的"基于表达式的访问控制"(@Pre和@Post注释),类似于Spring Security Documentation中的示例:
@PreAuthorize("hasPermission(#contact, 'admin')")
public void deletePermission(Contact contact, Sid recipient, Permission permission);
Run Code Online (Sandbox Code Playgroud)
在用于访问控制决策的该示例中,可以使用#contact语法访问发送到该方法的对象(例如,联系人).
但是,我无法获得@PreAuthorize(或@RolesAllowed)注释来处理Grails控制器操作.如果我用@PreAuthorize(而不是@Secured,如上所述)注释列表操作,我会收到以下错误:
元素FIELD上不允许使用注释@ org.springframework.security.access.prepost.PreAuthorize
这并不奇怪 - 该操作是Groovy闭包(具有可执行代码的字段),而不是方法.但是,我也尝试使用从闭包中调用的方法的注释,如:
def list = {
testMethod()
....
}
@PreAuthorize("hasRole('ROLE_USER')")
public boolean testMethod(){
println "testMethod succeess"
return true;
}
Run Code Online (Sandbox Code Playgroud)
虽然这不会引发任何错误,但它似乎也没有提供任何访问控制.(无论用户是否具有ROLE_USER,都会打印"testMethod success").
所以,我尝试了一些不同的东西(并阅读了文档),但是还没有能够找到一种使用Grails控制器动作使用@PreAuthorize注释的好方法.这可能吗?在Grails应用程序中是否有更好的方法来使用Spring-Security-Annotations来提供访问控制,这是系统状态的一个功能?
我开发了一个使用标签(关键词)的网站,以便对照片进行分类.现在,我在MySQL数据库中拥有的是一个具有以下结构的表:
image_id (int)
tag (varchar(32))
Run Code Online (Sandbox Code Playgroud)
每当有人标记图像(如果标记有效并且有足够的投票),它就会被添加到数据库中.我认为这不是最佳的做事方式,因为现在我有5000个带标签的图像,标签表有超过40000个条目.我担心这会开始影响性能(如果它还没有影响它).
我认为这个其他结构认为获取与特定图像相关联的标签会更快,但是当我想要获取所有标签或者最常用的标签时,它看起来很糟糕:
image_id (int)
tags (text) //comma delimited list of tags for the image
Run Code Online (Sandbox Code Playgroud)
有没有一种正确的方法可以做到这一点,或者两种方式都或多或少相同?思考?
在服务器端(GAE),我有一个java Hashtable.
在客户端(iPhone),我正在尝试创建一个NSDictionary.
myHashTable.toString()让我看起来像[myDictionary描述]看起来很近 - 但并不完全相同.如果它们是相同的,我可以将字符串写入文件并执行:
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:tmpFile];
Run Code Online (Sandbox Code Playgroud)
我可以在obj-C中编写一个小解析器来处理myHashtable.toString(),但我有点希望有一个快捷方式已经内置到某个地方 - 我似乎无法找到它.
(所以,作为一个怪胎,我会花远远不再搜索网站的快捷方式比它会带我来写和调试分析器...;)
无论如何 - 提示?
谢谢!
差不多,标题说的是什么.我需要使GWT DatePicker组件使用星期一作为一周的第一天.目前的标签是S M T W T F S,我希望它是M T W T F S S.有什么方法可以实现吗?
我需要让一个控件成为一个控制器(在设计和运行时保持其他控件)类似于TPanel,而不继承自定义面板或类似的控件,我如何告诉我的控件它假设包含东西?
我在Unix中创建端口时遇到了麻烦.这段代码不断返回"创建socket(3)的错误",这没有任何意义,因为sockfd必须小于0才能打印错误行.
server.c:
int main (int argc, char **argv)
{
int sockfd;
struct sockaddr_in server_sockaddr;
char buff[TRANSFER_BUFFER_LEN];
/* check number of command line arguments */
if (argc < 2)
{
fprintf (stderr, "Usage: %s <port>\n");
exit (EXIT_FAILURE);
}
/* create server socket */
if ((sockfd = createUdpSocket (&sockfd,
&server_sockaddr,
atoi (*(argv + 1)))
) < 0);
{
fprintf (stderr, "Error creating socket (%d).\n", sockfd);
exit (EXIT_FAILURE);
}
...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
socket_utils.h:
int createUdpSocket (int *sockfd, struct sockaddr_in *client_sockaddr, int port) …Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#define MAX 5
int stk[MAX];
int top=-1;
main()
{
char ch;
void push();
void pop();
void display();
do
{
printf("1. Push\n");
printf("2. Pop\n");
printf("3. Display\n");
ch=getchar();
if(ch=='1')
push();
if(ch=='2')
pop();
if(ch=='3')
display();
printf("Do u want to continue y/n");
ch=getchar();
}while(ch=='y'||ch=='Y');
}
void push()
{
}
void pop()
{
}
void display()
{
}
Run Code Online (Sandbox Code Playgroud)
我完成推送操作的那一刻...程序打印""你想继续y/n"并退出....不等待用户输入""y/Y"
请帮忙
我想问一个关于multipart/form数据的问题.我找到了multipart post的http头和Content-Type:multipart/form-data; 边界= -----...--- boundaryNumber.我想问一下,boundaryNumber和'='之间有多少' - '?
我只是在visual studio 2010中使用grub-bootable C++内核.
我已经达到了新的和删除写入的地步,以及动态分配的数组等工作.例如,我可以使用STL列表.在我写了一个memcpy例程后,我甚至可以对它们进行排序.问题是当我使用std :: vector类型时.简单地构造向量将内核发送到la la land.
显然我错过了某种功能实现,但我通过STL搜索它并空手而归.它在push_back失败:
vector<int> v;
v.push_back(1);
Run Code Online (Sandbox Code Playgroud)
并消失在以太.
有什么猜测我错过了什么?
编辑是的它是int的向量.对困惑感到抱歉.不仅如此,它不是它失败的构造函数,它是对push_back的调用.
operating-system visual-studio-2010 stdvector visual-c++-2010
这是我当前的xpath代码"/html/head/title".
但是你知道,在现实世界的html环境中,代码格式通常会被破坏,例如<html>标签丢失可能会导致异常.所以,我想知道是否有一种安全的方法来提取<title>标签?(类似于getElementByTagName)
c ×2
date ×1
datepicker ×1
delphi ×1
delphi-2009 ×1
grails ×1
gwt ×1
hashtable ×1
html ×1
java ×1
mysql ×1
nsdictionary ×1
objective-c ×1
optimization ×1
performance ×1
stack ×1
stdvector ×1
structure ×1
tags ×1
unix ×1
xpath ×1