utorização @Delphi DataSnap que não respeita o atributo TRoleAuth
Estou tentando implementar a autorização em um aplicativo Delphi XE DataSnap. Dividi isso em um exemplo muito simples, mas ainda não vejo os efeitos do atributo TRoleAuth para um método ou class
Here é uma classe DSServerMethods simples que inclui os métodos de amostra gerados. A classe foi decorada com as funções de convidado e de qualquer pessoa autorizada, e a indesejada função negada. O método ReverseString foi decorado com a função negada somente leitura:
type
[TRoleAuth('guest,anyone','unwelcome')]
TMyDSServerMethods = class(TDSServerModule)
DataSetProvider1: TDataSetProvider;
...
public
{ Public declarations }
function EchoString(Value: string): string;
[TRoleAuth('','readonly')]
function ReverseString(Value: string): string;
...
end;
Estou atribuindo funções no método OnUserAuthenticate. Por exemplo, eu tenho um usuário para quem estou atribuindo a função somente leitura de OnUserAuthenticate, uma função que acredito que deve negar a permissão do usuário para executar a função ReverseStrin
Pelo que entendi, meu código deve comparar as funções do usuário com as TStrings EventObject.AuthorizedRoles e EventObject.DeniedRoles do método OnUserAuthorize do TDSAuthenticationManager e definir o parâmetro formal válido desse método de acord
Aqui está um método OnUserAuthorize simples que estou usando para tesing. Quando eu passo nele usando o depurador em resposta a um usuário com a função somente leitura tentando invocar ReverseString, EventObject.AuthorizedRoles e EventObject.DeniedRoles são nulos, e EventObject.Roles contém a função somente leitur
procedure TServerContainer1.DSAuthenticationManager1UserAuthorize(
Sender: TObject; EventObject: TDSAuthorizeEventObject;
var valid: Boolean);
begin
outputdebugstring(PChar(Eventobject.UserName));
if EventObject.UserRoles <> nil then
outputdebugstring(PChar(eventobject.UserRoles.Text));
if EventObject.AuthorizedRoles <> nil then
outputdebugstring(PChar(eventobject.AuthorizedRoles.Text));
if EventObject.DeniedRoles <> nil then
outputdebugstring(PChar(eventobject.DeniedRoles.Text));
valid := True;
end;
stou perdendo o ponto ou existe uma propriedade que eu precise definir em algum lugar para permitir que o atributo TRoleAuth funcion
= = = = = = = = = = Editar: Mat DeLong forneceu a resposta. A unidade DSAuth (onde a classe de atributo customizado TRoleAuth é declarada) estava ausente na seção de interface da unidade na qual o descendente DSServerModule foi definido.